![](/img/trans.png)
[英]How to return different cache-control headers for different endpoints using ASP.NET minimal APIs?
[英]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
-----
謝謝!
如果要設置最遠的最大年齡,您可能還想添加此行:
// 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.