1. 程式人生 > >ASP.net解決CSS與JS的快取問題

ASP.net解決CSS與JS的快取問題

前言

筆者前幾個月沒怎麼寫部落格,現在實習工作也4周了,開始規定自己每週寫一篇,主要目的是為了總結一下工作中遇到的問題與解決方法以及涉及到的知識,並與大家分享;順便的鍛鍊下自己的語言表達能力,這個在工作中真是太重要的,很多時候只要可以把問題清楚的描述出來,就等於問題已經可以解決了。

背景

剛做完領導交給的任務(修改幾個網頁頁面),自己測沒問題了,可是放到領導的機子上測試時卻出現了問題。找了一會發現是js快取問題。。。還好這個問題以前碰到過,所以沒花太長時間。既然遇到了這個問題,這裡就記下來,並想一下具體的對策。

構造類似的問題模型

這裡有4個檔案:

Default.aspx
Default.aspx.cs
JS1.js
CSS1.css

其中在Default.aspx的head段有對js和css的引用

<link href="Css1.css" rel="stylesheet" />
<script src="JS1.js"></script>

領導交給的任務呢,需要對CSS1.css和JS1.js修改,現在我們在這兩個檔案裡面打幾個空行,模擬我們修改了檔案。

這個時候,在自己電腦測的時候,可以會注意到要先清空快取再測。但是放到別人的電腦上,別人不一定會注意。

問題就這麼來了。

解決思路

百度過後總結一下,我們可以給引用檔案加上時間戳,這樣瀏覽器就認為這次的js和上次的js不是同一個檔案,就會重新載入了。如果時間戳用DataTime.Now,那麼重新載入的頻率過高,會影響效率,所以我們只需要在檔案修改後才讓瀏覽器重新載入即可。

可以這麼做。我們拿js檔案舉例:

後臺程式碼寫:

public string lastTime;

protected void Page_Load(object sender, EventArgs e)
{
    string filepath = Server.MapPath("JS1.js"); 
    FileInfo fileInfo = new FileInfo(filepath);  //FileInfo 在 System.IO 裡
    lastTime = fileInfo.LastWriteTime.ToString();

}

這樣lastTime就是JS1.js的最後修改的時間了。

接下來修改前臺的引用為:

<script src="JS1.js?lastTime=<%= lastTime %>"></script>

問題就解決了! 很簡單吧。

相關推薦

ASP.net解決CSSJS快取問題

前言 筆者前幾個月沒怎麼寫部落格,現在實習工作也4周了,開始規定自己每週寫一篇,主要目的是為了總結一下工作中遇到的問題與解決方法以及涉及到的知識,並與大家分享;順便的鍛鍊下自己的語言表達能力,這個在工作中真是太重要的,很多時候只要可以把問題清楚的描述出來,就等

asp.net mvc3 css/js壓縮合並---持續更新

1,CSS/JS壓縮:     我下面的合併是用了combres的元件,這裡我就不用這個實現了,推薦一個可以像vs裡面的cs/aspx這樣編輯的一個css/js編輯器。     名稱:Chirpy     描述:實現css/js檔案像編輯cs/aspx這

ASP.NET使用ajax時js失效問題解決

像這樣寫這段程式碼永遠不會失效; 至於頁面的生命週期孩子們,自己百度去吧! var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_endRequest(function () {     init(

ASP.NET獲取不到JS設定cookies的解決方法

今晚使用javascript設定一個來路的cookie,之後使用ASP.NET獲取這個cookie值,發現ASP.NET獲取不到JS設定的cookie值, 這是我所找到的解決方法. //JS設定來路寫入到cookiesetCookie("我是cookie"); //寫co

asp.net 解決js傳遞引數時,url漢字亂碼的問題

今天寫程式,用jquery進行提交資料,其中路徑中有中文引數,在js中alert出來是中文,但是提交到伺服器端就變成了亂碼。導致問題出現的原因是編碼。在我的程式中,jquery用這樣的形式去伺服器請求資料:      $.get("users.aspx?name="+name,null,function(d

nginx 解決cssjs請求路徑無法加載問題

proxy dem jfinal pan oot usr bmp 兩個 cli location / { proxy_pass http://jfinaldemo; root /usr/share/nginx/html;

ASP.NET 解決賬號重復登錄問題

封裝 用戶名 OS mys cati web 引入 val ride 解決重復登錄 用到了 .net 身份票證 和Global全局處理文件 第一步 登錄方法 傳入用戶名 private void GetOnline(string Name) {

jqueryweui關於switch cssjs結合

brush 文字 voice pan fin -c jquery type jquer <!--是否需要發票--> <div class="invoice clear"> <div clas

ASP.NET -- WebForm -- .aspx.aspx.cs檔案

ASP.NET -- WebForm --  .aspx與.aspx.cs檔案 1. ASP.NET -- WebForm(C#)檔案 .aspx檔案:是Html頁面,頁面的佈局,樣式在該檔案中設計。 .aspx.cs檔案:後臺程式碼 .aspx.designer.cs檔案:由工具自動生成的

C# ASP.NET 解決方案開發微信公眾號

小重山 · 昨夜寒蛩不住鳴    ___ 宋 · 岳飛         昨夜寒蛩不住鳴。驚回千里夢,已三更。起來獨自繞階行。人悄悄,窗外月朧明。         白首為功名。舊山松竹

ASP.NET後臺呼叫前臺JS函式的三種常見方法

第一種:使用普通的新增控制元件中的Attributes屬性進行呼叫 例如,像一般的普通的按鈕:Button1.Attributes.Add("onclick","MyFun();"); 此方法只能在Onload中或者類似於onload的初始化過程中新增才有效。並且是先執行指令碼函式,同時

CSSjs--全選功能

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</ti

【菜鳥學習ASP.net】xmlhtml的區別

前言: 剛剛接觸了html現在又來了個xml,一開始有點迷糊,後來發現通過實踐對比學習,二者之間的區別越來越清晰明瞭了,接下來和我一起來搞懂它吧! 1、什麼是HTML 超文字標記語言(英語:HyperText Markup Language,簡稱:HTML)是一種用於建立網頁

ASP.NET結合Redis實現分散式快取

  最近一個專案ASP.NET+MySQL 有的網頁開啟初始化的查詢需要10秒甚至更久,使用者體驗極差,而且併發量變大的時候網站容易崩潰 後來想了兩種解決方案都不是太滿意 1、資料庫裡建一張快取表,後臺作業定時去更新這張表,每次網頁開啟就可以直接從快取表裡查詢 2、使用者第一次開啟網站將資

ASP.NET Core管道中介軟體

ASP.NET Core管道和ASP.NET的事件驅動的管道有很大的不同,現在你可以在Startup檔案的Configure方法中呼叫Use,UseWhen,Map,MapWhen,Run方法來為特定的請求增加特定的處理邏輯。可以實現防盜鏈,日誌,許可權認證,事務處理等。

ASP.NET 解決Cookie亂碼

在Asp.net的HttpCookie中寫入漢字,讀取值為什麼全是亂碼?其實這是因為文字編碼而造成的,漢字是兩個編碼,所以才會搞出這麼個亂碼出來! 其實解決的方法很簡單:只要在寫入Cookie時,先將其用Url編碼,然後再寫入,當我們讀取時再解碼就OK    例子: &n

適合ASP.NET MVC的檢視片斷快取方式(上):起步

說到網站效能優化,沒有什麼比“快取”更重要了。即便是某些朋友口中念念不忘的“靜態頁”,說到底也只是快取了整張頁面內容而已。但是,顯然這樣大粒度的快取策略,在如今“牽一髮而動全身”的Web 2.0站點中幾乎是無法使用的。試想,在Twitter中的某個名人被數十萬人訂閱,那麼他發一條訊息,難道此時網站要去修改數十

適合ASP.NET MVC的檢視片斷快取方式(下):頁面輸出原則

上一篇文章裡已經把Html.Cache打造成了非常具有可用性的API,需要快取時我們只需在頁面上做一個標記即可:<% Html.Cache("cache_key", DateTime.Now.AddSeconds(10), () => { %> <% foreach (

適合ASP.NET MVC的檢視片斷快取方式(中):更實用的API

上一篇文章中我們提出了了片斷快取的基本方式,也就是構建HtmlHelper的擴充套件方法Cache,接受一個用於生成字串的委託物件。在快取命中時,則直接返回快取中的字串片斷,否則則使用委託生成的內容。因此,快取命中時委託的開銷便節省了下來。不過這個方法並不實用,如果您要快取大片的HTML,還需要準備一個Par

ASP.NET Core中的快取[1]:如何在一個ASP.NET Core應用中使用快取

.NET Core針對快取提供了很好的支援 ,我們不僅可以選擇將資料快取在應用程序自身的記憶體中,還可以採用分散式的形式將快取資料儲存在一個“中心資料庫”中。對於分散式快取,.NET Core提供了針對Redis和SQL Server的原生支援。除了這個獨立的快取系統之外,ASP.NET Core還藉助一箇中