我希望能够为用户通过GET请求下载的某些项目设置很长的过期时间。如何最好地使用ASP.NET MVC中的Expires头文件?
我想说'这很好,10分钟'(即我想设置一个Expires标题+10分钟)。这些请求是通过AJAX在页面中显示的HTML片段,它们适合用户的会话。 如果他们再次需要它们,我不想回到服务器并获得304 - 我希望浏览器缓存立即为我提供相同的项目。
我发现了一篇关于MVC Action filter caching and compression差不多一岁的文章。这将创建一个自定义ActionFilter来更改过期标题。我已经在使用压缩过滤器,它对我生成的一些自定义CSS非常有用(压缩率为94%!)。
我有两个主要的担忧:
1)我真的必须使用此方法。如果我这样做,我很好,但是在MVC或OutputCache功能中真的没有功能为我做这件事吗?在传统的ASP.NET中,我总是手动设置Expires头,但是我们不能再这么做 - 至少在控制器中不行。
2)如果我确实使用了这种过滤方法 - 是否会干扰OutputCache策略 - 我希望能够在web.config中控制该策略。我认为这两者是相互排斥的,你不会想要两者 - 但我不完全确定。
@craig感谢您的输入。我猜有关#2的一个经验法则是,如果生成的视图非常简单(即没有数据库访问),那么过期可能就是所需要的。如果需要十个Web方法调用,那么你会想使用OutputCache。有时你想正面和反面是正确的:-) – 2009-02-16 18:41:13