无到期标头

3

我有来自YSlow的报告:

(no expires) http://static3.scirra.net/avatars/128/40cfdcbd1b1ec1842e199c97c4b85a4a.png

还有许多类似的情况。但是在我的web.config文件中:

    <system.webServer>
            <staticContent>
                <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" />
            </staticContent>
            <caching>
                <profiles>
                    <add extension=".ashx" policy="CacheForTimePeriod"  kernelCachePolicy="DontCache" duration="01:00:00" />
                    <add extension=".png" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" location="Any" />
                </profiles>
            </caching>
        <rewrite>
            <rules>
                <rule name="Avatar">
                    <match url="avatars/([0-9]+)/(.*).png" />
                    <action type="Rewrite" url="gravatar.ashx?hash={R:2}&amp;size={R:1}" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>

这不应该正确地添加到期标头吗? 我的目标是:

  • Gravatar.ashx从Gravatar服务器获取图像
  • 服务器缓存结果1小时(类似于SO)
  • 添加到期标头,以便客户端不会一直从我的服务器获取它
1个回答

1

在IIS中,您可以定义HTTP头。

在IIS中,单击您的图像文件夹。然后单击HTTP响应标头。然后设置常见标头...

从这里,您可以检查过期的Web内容以及选择多长时间。您还可以对JS和CSS执行此操作。请注意,要应用此操作的文件。如果您设置了非常远的到期日,并且计划更改这些文件,则可能会对您的站点造成问题。

如果您在JS文件上有1个月的到期日,然后在使用相同名称时更改它,则当用户访问您的站点时,他们将看到内容尚未过期,并且不会从Web服务器请求更改的文件。您可以通过设置适度的到期时间来处理此问题,同时认为内容可能会更改,或者您可以为JavaScript和CSS文件应用版本号。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接