我有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>


是否应该不正确添加expires标头?我的目标是:


Gravatar.ashx从Gravatar服务器获取图像
服务器缓存结果为1小时(类似于SO)
添加了Expires标头,因此客户端不会继续从我的服务器获取标头

最佳答案

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

在IIS中,单击您的图像文件夹。然后单击“ HTTP响应头”。然后设置通用标题...

您可以从此处检查Expire Web Content,以及选择多少时间后。您也可以针对JS和CSS执行此操作。请注意您也应用了哪些文件。另外,如果您设置的过期时间很长,并且打算更改这些文件,则可能会导致您的站点出现问题。

如果您的JS文件有一个月的有效期,然后使用相同的名称进行更改,那么当用户访问您的网站时,他们将看到内容尚未过期,并且不会从Web服务器请求更改的文件。当您认为内容随时可能更改时,可以通过设置适当的到期时间来解决此问题,也可以将版本号应用于javascript和CSS文件。

关于c# - 没有过期标题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6644361/

10-13 00:18