加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 自动刷新浏览器缓存

发布时间:2020-12-16 06:26:48 所属栏目:asp.Net 来源:网络整理
导读:如果我听起来无知,这是我从来没有遇到过的事情,所以请原谅我. 我遇到的基本问题是,在Visual Studio 2010中工作时,我所做的任何更改似乎都会被某种缓存所捕获. 例如,我将对页面进行更改,运行解决方案,然后我必须按Ctrl F5强制刷新缓存以查看更改.这是ASP.NET
如果我听起来无知,这是我从来没有遇到过的事情,所以请原谅我.

我遇到的基本问题是,在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,PublicKeyToken=xxx"/>
        <add assembly="System.Windows.Forms,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>

解决方法

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 Reload Button
> Firefox:Ctrl Shift R或Shift Reload

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

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

Wikipedia has a great list .

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读