IIS缓存文件永远不会被替换

时间:2015-04-16 20:45:28

标签: caching iis http-caching iis-8.5

也许我错过了一些没有措辞我的Google搜索正确,但我遇到了IIS 8.5和缓存的问题。我有一个服务器设置,按所有标准应该只提供静态文件。显然,当文件被更改时,应该提供新文件。问题在于,即使服务器重新启动,设置文件立即过期,设置缓存,禁用压缩以及关闭任何其他缓存功能,旧文件仍将提供旧时间戳。

我有以下设置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <security>
            <requestFiltering allowHighBitCharacters="false">
                <verbs allowUnlisted="false">
                    <add verb="GET" allowed="true" />
                </verbs>
            </requestFiltering>
        </security>
        <caching enabled="false" enableKernelCache="false" />
        <urlCompression doStaticCompression="false" />
    </system.webServer>
    <location path="" overrideMode="Deny">
        <system.webServer>
        </system.webServer>
    </location>
    <location path="" overrideMode="Allow">
        <system.webServer>
        </system.webServer>
    </location>
</configuration>

文件所在的文件夹具有只读权限。有趣的事实是,如果我去mydomain.com,旧版本出现,但去newmydomain.com加载新文件(即使它们都指向相同的IP地址)。

1 个答案:

答案 0 :(得分:1)

如果与响应一起发送的缓存控制标头指示内容在给定的时间段内不会更改,则HTTP客户端可以使用旧版本的文件。是否在服务器上更改了内容无关紧要。

例如,如果文件与标题一起发送:

Cache-Control: Max-age=86400

然后24小时,客户端可以使用该文件而无需联系服务器。如果文件在服务器上发生变化,客户端将不知道该文件已更改,因为它甚至不会向服务器发出请求。

您可以添加must-revalidate缓存控制属性以强制客户端始终发出服务器请求。