19

我刚刚针对我们的网站运行了Google 的 Page Speed应用程序,其中一项建议是利用浏览器缓存。扩展这一点揭示了以下内容:

以下可缓存资源的新鲜度生命周期较短:为以下资源指定至少一周后的到期时间:

<一长串图像>
<一些javascript文件>

如何延长特定图像的“新鲜寿命”?

这是一个在IIS7.5上运行的ASP.NET项目

4

3 回答 3

50

我在本网站的其他地方找到了我的问题的答案。哇!(不知道为什么我第一次发布这个时它没有出现,但没关系,我最终到达了那里。)

对于那些感兴趣的人,答案是这样的(由Gabriel McAdams发布):


您在 IIS 中执行此操作。如果您使用的是 IIS 7,则可以在 web.config 中添加标头。它位于 system.webServer 部分。

<staticContent>
    <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" />
</staticContent>

这将导致所有静态内容的过期 HTTP 标头设置为 2020 年。静态内容是指不通过 ASP.NET 引擎提供的任何内容,例如图像、脚本文件和样式表。

或者要使用相对到期,请使用以下命令:

<staticContent>
    <clientCache cacheControlMaxAge ="2.00:00:00" cacheControlMode="UseMaxAge" />
</staticContent>

这将导致所有静态内容的过期 HTTP 标头设置为 2 天。

于 2010-06-11T10:50:51.943 回答
4

您必须将 Expires Header 添加到静态内容中,包括图像、html、js、css 文件。您可以system.webServer使用 IIS7 在 web.config 部分轻松添加 expires 标头:

<静态内容>
    <clientCache httpExpires="2020 年 5 月 1 日星期一 05:00:00 GMT" cacheControlMode="UseExpires" />
</静态内容>
于 2010-06-10T18:51:53.657 回答
2

您通常想要的是缓存所有资产(css、js 和图像),html 文件将具有缓存破坏链接,以便您仍然可以更新图像。

为了使其正常工作,html 文件不能是staticContent. 为 html 文件添加新的处理程序可防止它们被永久缓存。

    <staticContent>
        <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" />
    </staticContent>
    <handlers>
      <add
        name="HtmlHandler"
        path="*.html"
        verb="*"
        type="System.Web.Handlers"
        preCondition="integratedMode"
      />
    </handlers>
于 2015-11-15T10:50:38.717 回答