gpt4 book ai didi

asp.net - IIS/ASP.NET 响应缓存控制 : private for all requests

转载 作者:行者123 更新时间:2023-12-03 22:24:53 25 4
gpt4 key购买 nike

为什么来自 ASP.NET 的所有响应都包含 Cache-Control: private ?甚至是 404 响应? IIS 中有没有设置这个默认值的东西,有没有办法配置它?或者在 ASP.NET 中有什么东西可以设置这个吗?
对于动态内容(即所有 MVC 结果),我不希望它被浏览器缓存,因为它是动态的并且可以随时更改。静态内容托管在 CDN 上,因此不由 IIS 提供。
编辑:
澄清一下,我非常了解Cache-Control: private是,private 之间的区别, public , no-store等以及如何/何时使用它们。我的问题是为什么 Cache-Control: private IIS/ASP.NET默认添加,如何防止默认添加。我知道缓存动态页面可能很有用,但在我的应用程序中我不想缓存动态页面/响应。例如,我不希望缓存 XHR JSON 响应,因为它们包含动态内容。不幸的是,服务器添加了 Cache-Control: private自动响应所有响应,因此我必须在任何地方手动覆盖它。
如何重现:打开 Visual Studio 并使用 MVC 项目创建一个新的 ASP.NET 框架(是的,框架,不,不是核心。我们还不能将我们的系统迁移到核心)解决方案。现在在 IIS Express 中启动项目(只需按下播放按钮),并在浏览器中使用 F12 devtools 查看 http 响应。您将看到它包含 Cache-Control: private .我的问题是,是什么添加了此 header ,以及如何防止默认添加它?
enter image description here

最佳答案

将我的一点添加到社区给出的出色答案中;
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 使用安全且更明显/有用的默认设置,它恰好是私有(private)的
2.如何防止默认添加?
IIS/asp.net 允许从引入之日起对其进行配置,例如 this , ref1 , ref2 , ref3 , ref4
System.Web Namespace

The System.Web namespace supplies classes and interfaces that enable browser-server communication. This namespace includes the System.Web.HttpRequest class, which provides extensive information about the current HTTP request; the System.Web.HttpResponse class, which manages HTTP output to the client; and the System.Web.HttpServerUtility class, which provides access to server-side utilities and processes. System.Web also includes classes for cookie manipulation, file transfer, exception information, and output cache control.

protected void Application_BeginRequest()
{
Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
}

关于asp.net - IIS/ASP.NET 响应缓存控制 : private for all requests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47224561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com