有选择地通过https缓存.js和.png文件?

时间:2009-11-22 07:39:15

标签: asp.net asp.net-mvc caching https http-headers

我们正在ASP.NET中创建一个大型安全后台Web应用程序。对网站的所有访问都是通过https连接进行的,我们要么关闭页面缓存,要么将缓存设置为快速到期。

然而,该网站使用了相当多的图像和较大的javascript文件/库。有没有办法有选择地缓存某些文件或文件类型,以便它们不会一直重新加载?

3 个答案:

答案 0 :(得分:0)

请查看此类标题:

  • 到期日:2009年11月23日星期一07:30:00 GMT
  • 缓存控制:public,max-age = 86400

您应该阅读或浏览Caching in HTTP

使用ASP.NET MVC,您需要使用OutputCacheAttribute来装饰控制器操作。例如:

[OutputCache(Duration = 24*60*60)] // Cached for 1 day
public ActionResult Index() { return View(); }

在ASP.NET中,您可以在aspx文件中使用OutputCache指令:

<%@ OutputCache Duration="86400" %>

答案 1 :(得分:0)

经过一些额外的谷歌搜索,看起来我可能只需要在我的脚本和图像文件夹(以及我想要缓存的任何其他文件夹)中创建一个web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
     <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
     </staticContent>
  </system.webServer>
</configuration>

这看起来是对的吗?我错过了什么吗?

答案 2 :(得分:0)

您需要使用“远期未来”模式。不使用输出缓存,这是你如何做到这一点。 (我个人认为这看起来比输出缓存更好。)

HttpContext.Response.ExpiresAbsolute = DateTime.Now.AddYears(5);

当然,您可以将DateTime更改为您想要的任何内容。