哪个选项:UseMaxAge,UseExpires更适合作为缓存选项

时间:2013-12-31 12:09:12

标签: caching asp.net-mvc-2

以下哪项更适合为asp.net mvc2应用程序设置静态内容(即js,css,Images)的缓存选项:

** - Web.config:**

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <!--Caching-->
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00"/>      
    </staticContent>
  </system.webServer>
</configuration>

或者

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <!--Caching-->
    <staticContent>      
      <clientCache cacheControlMode="UseExpires" httpExpires="Tue, 31 Dec 2030 12:00:00 GMT"/>
    </staticContent>
  </system.webServer>
</configuration>

简而言之,我想知道哪个选项:UseMaxAge,UseExpires更好。如果我使用HttpModules删除请求和响应头中的ETag,会对它产生什么影响。

有人可以帮助我了解有关上述问题的更多详情吗?

谢谢&amp;问候, Santosh Kumar Patro

1 个答案:

答案 0 :(得分:2)

两者都不是更好,它们是不同的。

  • UseExpires 用于指定将来内容过期的绝对时间。
  • UseMaxAge 用于指定滑动过期。

我认为浏览器不会缓存超过一年的内容,因此您可以看到您提供的指定365天的示例。

鉴于您的示例,我怀疑您正试图让客户端无限期地(或尽可能长时间)缓存内容,因此您可能希望使用:

<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />

这样,客户端会将内容缓存一年,或者由于其他原因(例如用户清除缓存或缓存达到限制)而将其从浏览器缓存中删除。