缓存问题 - 保存时ASPX和ASCX文件不会更新

时间:2011-03-04 16:38:27

标签: asp.net caching iis-7 web-config iis-7.5

在上个月的某个时刻,我一直在处理的两个Web应用程序项目已经停止显示aspx和ascx文件的更新,直到IIS重新启动,或者它们所属的网站被重置。

这似乎非常随机,我在web.config部分找不到任何会导致此更改的原因。

有什么好处可以找到这个问题的来源?

web.config的当前缓存部分:

删除outputCacheProfile并重新启动IIS没有任何区别。

 <caching>
    <outputCacheSettings>
        <outputCacheProfiles>
            <add name="ClientResourceCache" location="None" enabled="true" duration="3600" varyByParam="*" varyByContentEncoding="gzip;deflate"/>
        </outputCacheProfiles>
    </outputCacheSettings>
</caching>

记住staticConent并重新启动也没有区别

 <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00">
    </clientCache>
 </staticContent>
 <caching>
    <profiles>
        <add extension=".gif" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
        <add extension=".png" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
        <add extension=".js" policy="DontCache" kernelCachePolicy="DontCache" duration="00:01:00" location="Any" />
        <add extension=".css" policy="DontCache" kernelCachePolicy="DontCache" duration="00:01:00" location="Any" />
        <add extension=".jpg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
        <add extension=".jpeg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
    </profiles>
  </caching>

我们还尝试使用CacheUntilChange添加.ascx和.aspx扩展名,这没有任何区别。具有相同设置的其他网站没有问题。

编辑:最初这个状态在项目构建时也没有更新,我个人无法确认该问题,但是其他开发人员已经告知了这个问题。

2 个答案:

答案 0 :(得分:4)

在部署时,是删除发布位置中的所有数据,然后部署新文件还是仅复制和覆盖?我不认为这是代码或配置问题。

检查您的bin目录并查找扩展名为.cache的一些不合适的文件。我在过去遇到过这种情况,现在我总是确保在每次更新时都进行完全删除和部署,以确保没有遗留旧文件。

如果您在Visual Studio中使用“发布”功能,请确保设置“在发布之前删除所有现有文件”选项。

答案 1 :(得分:1)

Response.Cache.SetNoStore();

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Response.Expires = -1;

将此添加到global.asax.cs文件中的应用程序开始请求事件中