IIS/ASP.NET 響應記憶體控制:所有請求的私有
為什麼來自 ASP.NET 的所有響應都包含
Cache-Control: private? 甚至是 404 響應?IIS 中有沒有設置這個預設值的東西,有沒有辦法配置它?或者在 ASP.NET 中有什麼東西可以設置這個嗎?對於動態內容(即所有 MVC 結果),我不希望它被瀏覽器記憶體,因為它是動態的並且可以隨時更改。靜態內容託管在 CDN 上,因此不由 IIS 提供。
編輯:
澄清一下,我非常了解, ,等
Cache-Control: private之間的區別以及如何/何時使用它們。我的問題是為什麼預設添加 IIS/ASP.NET 以及如何防止預設添加它。我知道記憶體動態頁面可能很有用,但在我的應用程序中我不想記憶體動態頁面/響應。例如,我不希望記憶體 XHR JSON 響應,因為它們包含動態內容。不幸的是,伺服器會自動添加到所有響應中,所以我必須在任何地方手動覆蓋它。private``public``no-store``Cache-Control: private``Cache-Control: private**如何重現:**打開 Visual Studio 並使用 MVC 項目創建一個新的 ASP.NET 框架(是的,框架,不是核心。我們還不能將我們的系統遷移到核心)解決方案。現在在 IIS Express 中啟動項目(只需按下播放按鈕),並在瀏覽器中使用 F12 devtools 查看 http 響應。您將看到它包含
Cache-Control: private. 我的問題是,是什麼添加了此標頭,以及如何防止預設添加它?
將我的一點添加到社區給出的出色答案中;
1.http記憶體頭屬性Cache-Control:IIS/ASP.NET預設添加private?
記憶體請求指令
客戶端可以在 HTTP 請求中使用的標準 Cache-Control 指令。
Cache-Control: max-age=<seconds> Cache-Control: max-stale[=<seconds>] Cache-Control: min-fresh=<seconds> Cache-Control: no-cache Cache-Control: no-store Cache-Control: no-transform Cache-Control: only-if-cached記憶體響應指令
伺服器可以在 HTTP 響應中使用的標準 Cache-Control 指令。
Cache-Control: must-revalidate Cache-Control: no-cache Cache-Control: no-store Cache-Control: no-transform Cache-Control: public Cache-Control: private Cache-Control: proxy-revalidate Cache-Control: max-age=<seconds> Cache-Control: s-maxage=<seconds>IIS 使用安全且更明顯/有用的預設設置,它恰好是私有的
2.如何防止預設添加?
IIS/asp.net 允許從它引入之日起對其進行配置,如ref1、ref2、ref3、ref4和
System.Web 命名空間提供了啟用瀏覽器-伺服器通信的類和介面。此命名空間包括 System.Web.HttpRequest 類,它提供有關目前 HTTP 請求的大量資訊;System.Web.HttpResponse 類,它管理到客戶端的 HTTP 輸出;和 System.Web.HttpServerUtility 類,它提供對伺服器端實用程序和程序的訪問。System.Web 還包括用於 cookie 操作、文件傳輸、異常資訊和輸出記憶體控制的類。
protected void Application_BeginRequest() { Context.Response.Cache.SetCacheability(HttpCacheability.NoCache); }
