Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何指定HTTP过期标头?(ASP.NET MVC+;IIS)_Asp.net Mvc_Caching_Iis_Http Headers - Fatal编程技术网

Asp.net mvc 如何指定HTTP过期标头?(ASP.NET MVC+;IIS)

Asp.net mvc 如何指定HTTP过期标头?(ASP.NET MVC+;IIS),asp.net-mvc,caching,iis,http-headers,Asp.net Mvc,Caching,Iis,Http Headers,我已经在ASP.NET MVC应用程序中使用了输出缓存 告诉我在响应头中为css和图像指定HTTP缓存过期 我知道响应对象包含一些控制缓存过期的属性。我知道这些属性可用于控制HTTP缓存,以便从代码中获得响应: 或者 Response.AddHeader("Expires", "Thu, 01 Dec 1994 16:00:00 GMT"); 问题是如何为自动提供的资源(例如图像、css等)设置Expires标头?找到它: 我需要为静态内容指定客户端缓存(在web.config中) 从看项

我已经在ASP.NET MVC应用程序中使用了输出缓存

告诉我在响应头中为css和图像指定HTTP缓存过期

我知道响应对象包含一些控制缓存过期的属性。我知道这些属性可用于控制HTTP缓存,以便从代码中获得响应:

或者

Response.AddHeader("Expires", "Thu, 01 Dec 1994 16:00:00 GMT");
问题是如何为自动提供的资源(例如图像、css等)设置Expires标头?

找到它:

我需要为静态内容指定客户端缓存(在web.config中)



看项目:)

如果要从返回的资源的代码(即不是IIS提供的静态文件)执行此操作,最好使用
Response.Cache

Response.Cache.SetExpires(DateTime.Now.AddYears(1));
Response.Cache.SetCacheability(HttpCacheability.Public);

我知道这并不是你想要的,但我通过谷歌找到了这个问题,我想其他人可能会喜欢这个答案,因为它与你在原始问题文本中显示的API相关。

IIS 7…但我可能无法访问IIS中的所有设置,此站点是托管站点您可以在IIS中设置它:这与在IIS中设置遥远的过期日期有何不同?不确定是否有任何差异-请随时检查HTTP流量的差异:)上述方法的优点是,可以在不配置IIS的情况下更改缓存行为(例如,在共享托管上)如果,其中一个映像在缓存过期日期之前更改。如何初始化对该图像的302请求?@sameer如果它是不同的图像,请使用不同的名称,或使用缓存buster(带有文件日期的querystring)另外,对于任何好奇的人,当您在浏览器上单击“刷新”时,它会对每个文件执行一个if-modified-since请求。。。如果导航,您将看到缓存响应。这不应该是DateTime.UtcNow吗?如果没有,您能否解释一下浏览器如何知道服务器的本地时间?(更新:事实上回答了这个问题)好问题。正如你所发现的,这并不重要。
<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlCustom="public" 
      cacheControlMaxAge="12:00:00" cacheControlMode="UseMaxAge" />
    </staticContent>
   </system.webServer>
</configuration>
Response.Cache.SetExpires(DateTime.Now.AddYears(1));
Response.Cache.SetCacheability(HttpCacheability.Public);