程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 防止樣式緩存

防止樣式緩存

編輯:關於ASP.NET

你是不是非常的討厭,當發布一些新的css到你的網站的時候,客戶端的浏覽器沒有下 載到最新版本css,令網站看起來可怕?

本文通過一個簡單的控件,迫使浏覽器來檢索最新版本的CSS。

從使用的角度來看,我們只需要從工具箱拖放一個控件,用戶可以在設計時或運行時 設置具體的屬性。

以下是標記,能在您的ASP.NET Web窗體或用戶控件中使用到:

<CWeb:CSSInclude ID="CSSInclude1" runat="server"   EnableViewState="false" HRef="~/css/base.css"  Rel="stylesheet"  Type="text/css" CacheKey="BaseCSS" />

控件支持的屬性有:

HRef - 獲取或設置產生的link元素css文件的href。

Rel - 獲取或設置所產生的link元素的rel。

Type-獲取或設置生成link元素的Type。

CacheKey -獲取或設置高速緩key的名稱,用於儲存緩存CSS文件的版本信息。

控件創建一個基於最後寫入該文件時間的一個日期戳。這個日期戳然後存儲在緩存中 ,對CSS文件創建了緩存依賴。當文件改變,日期戳將發生變化,因此,客戶端將獲得最 新的css樣式表。下面是用來獲取文件的版本信息的代碼:

代碼

/// <summary>
/// 獲取一個url以及它的版本,
/// 如果文件已經改變,能讓浏覽器在頁面刷新的時候,能獲得的最新版本
/// </summary>
/// <returns></returns>
private string GetIncludeUrlWithVersion()
{
     string url = string.Empty;
     string version = "1";
     if (string.IsNullOrEmpty(CacheKey))
         throw new ArgumentException("The cacheKey must have a  value.");
     if (Page.Cache[CacheKey] == null)
     {
         FileInfo fileInfo = new FileInfo(Page.Server.MapPath (HRef));
         if (fileInfo.Exists)
         {
             version = fileInfo.LastWriteTime.ToString ("ddMMyyyyhhmmss");
             CacheDependency cacheDependency = new  CacheDependency(fileInfo.FullName);
             Page.Cache.Insert(CacheKey, version,  cacheDependency,);
         }
     }
     else
         version = Page.Cache[CacheKey] as string;
     return ResolveUrl(HRef) + "?v=" + version;
}

同樣的技術也可以用於腳本中,迫使浏覽器下載最新版本js文件。通過設置客戶端浏 覽器,和IIS,或者通過添加自定義頭到response, 緩存問題也能被防止。我在這裡所描 述的技術只是用另一種實現方式得到相同的結果:)。

出處:http://zhuqil.cnblogs.com

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved