簡體   English   中英

ASP.NET中的緩存控制標頭

[英]Cache-Control Headers in ASP.NET

我正在嘗試為Web應用程序設置緩存控制標頭(看起來我能夠做到這一點),但我得到的是我認為標題響應中的奇數條目。 我的實現如下:

    protected override void OnLoad(EventArgs e)
    {
        // Set Cacheability...
        DateTime dt = DateTime.Now.AddMinutes(30);
        Response.Cache.SetExpires(dt);
        Response.Cache.SetMaxAge(new TimeSpan(dt.ToFileTime()));

        // Complete OnLoad...
        base.OnLoad(e);
    }

這就是標題響應顯示的內容:

-----
GET /Pages/Login.aspx HTTP/1.1
Host: localhost:1974
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
X-lori-time-1: 1244048076221
Cache-Control: max-age=0

HTTP/1.x 200 OK
Server: ASP.NET Development Server/8.0.0.0
Date: Wed, 03 Jun 2009 16:54:36 GMT
X-AspNet-Version: 2.0.50727
Content-Encoding: gzip
Cache-Control: private, max-age=31536000
Expires: Wed, 03 Jun 2009 17:24:36 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 6385
Connection: Close
-----
  1. 為什么“Cache-Control”屬性會出現兩次?
  2. 我是否需要“Cache-Control”和“Expires”屬性?
  3. “Page_Load”是放置此代碼的最佳位置嗎?

謝謝!

如果要設置最遠的最大年齡,您可能還想添加此行:

// Summary:
// Sets Cache-Control: public to specify that the response is cacheable
// by clients and shared (proxy) caches.    
Response.Cache.SetCacheability(HttpCacheability.Public);

我使用來自文件處理程序的文檔和圖像做了很多響應標題操作,文件處理程序處理保存在數據庫中的文件請求。

根據您的目標,您可以真正強制瀏覽器緩存幾乎所有人都在本地頁面(如果這就是您想要/需要的)。

編輯:

我也認為你可能會設置錯誤的最大年齡...

Response.Cache.SetMaxAge(new TimeSpan(dt.Ticks - DateTime.Now.Ticks ));

此行設置為本地瀏覽器的30分鍾緩存時間[max-age = 1800]

對於2x緩存控制行......您可能需要檢查IIS是否已設置為自動添加標頭。

我沒有看到Cache-control出現兩次。 一個在請求中,一個在響應中。 請求中的那個可能是因為您在瀏覽器中按Shift + F5或類似的東西。

對於您的第二個問題:這取決於您希望使用緩存標頭實現的目標。

我不知道你想用max-age實現什么。 由於您將DateTime錯誤地轉換為TimeSpan,因此該值太高。 為什么不直接使用TimeSpan.FromMinutes?

頁面加載沒問題。 我自己經常亂用HTTP標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM