超級簡單:防止樣式緩衝

來源:互聯網
上載者:User

代碼:/Files/zhuqil/CSSInclude.zip 

   你是不是非常的討厭,當發布一些新的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://www.codeproject.com/KB/aspnet/PreventStylesheetCaching.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.