自动刷新浏览器缓存

时间:2013-06-06 13:22:10

标签: asp.net visual-studio-2010 browser-cache

如果我听起来无知,这是我从来没有遇到的事情,所以请原谅我。

我遇到的基本问题是,在Visual Studio 2010中工作时,我所做的任何更改似乎都会被某种缓存所捕获。

例如,我将对页面进行更改,运行解决方案,然后我必须按Ctrl + F5强制刷新缓存以查看更改。这是ASP.NET / HTML / CSS& JavaScript代码。一样。

过去Visual Studio过去只是在每次运行时清除缓存,所以至少可以说我有点沮丧。

此外,当我将解决方案部署到IIS服务器时,用户也会遇到同样的情况。即使ASP.NET页面上有更改,用户也会继续提升缓存版本,直到清除缓存为止。我通过使用版本号重命名文件(尤其是javascript)来缓解这个问题,因此客户端总是将它们视为新文件并加载而不是从缓存加载。

Visual Studio或web.config中是否有可能导致此问题的设置?

编辑:这是我的web.config文件

<configuration>
  <system.web>
    <sessionState cookieless="UseCookies" timeout="1440" mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"/>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxx"/>
        <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxx"/>
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxx"/>
      </assemblies>
    </compilation>
    <authentication mode="Windows"/>
    <pages>
      <controls>
        <add tagPrefix="ajaxtoolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolKit"/>
      </controls>
    </pages>
  </system.web>
  <system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="50000000"/>
      </webServices>
    </scripting>
  </system.web.extensions>
</configuration>

1 个答案:

答案 0 :(得分:5)

Web资源(Css,Js,Images甚至Html)需要花时间通过网络下载,这会增加加载网页所需的时间(Steve Souders建议它需要近80%,请参阅here )。 HTTP缓存允许浏览器或代理保存或缓存这些资源。资源缓存后,浏览器或代理可以引用本地缓存的副本,而不必在后续访问网页时再次下载。

浏览器缓存可由HTTP缓存标头控制(请参阅快速概述here

所以,它不是因为Visual Studio或asp.net,而是因为浏览器。

希望有很多方法可以在服务器端(仅用于测试目的)或在客户端(为了重新启动和绕过缓存)禁用缓存。

以下是一些可能性:

使用asp.net

您可以使用此代码显式禁用浏览器缓存

// Stop Caching in IE
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);

// Stop Caching in Firefox
Response.Cache.SetNoStore();

警告:仅在本地进行测试!

此外,许多捆绑系统允许您控制缓存设置。 asp.net mvc Bundles在创建包之后一年设置HTTP Expires Header,并在查询字符串中添加一个additionalnal参数。只要捆绑包没有变化,这个唯一标识符就会相同。请参阅here

在浏览器上

有许多快捷方式可以重新加载页面并绕过缓存: 例如:

  • Chrome :Shift +重新加载按钮
  • IE :Ctrl + F5或Ctrl +重新加载按钮
  • Firefox :Ctrl + Shift + R或Shift + Reload

还有很多方法可以完全禁用浏览器上的缓存。

  • IE :工具‣Internet选项‣临时Internet文件‣设置‣检查存储页面的新版本
  • Chrome :工具‣开发者工具lower左下角的齿轮图标‣角禁用缓存
  • Firefox :工具‣选项‣高级‣网络‣缓存大小= 0

Wikipedia has a great list