gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:25:16 26 4
gpt4 key购买 nike

这是我以前从未处理过的事情,所以如果我听起来无知,请原谅。

我遇到的基本问题是,在 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>

最佳答案

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

浏览器缓存可以通过 HTTP 缓存 header 进行控制(请参阅快速概述 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 bundle 在创建 bundle 一年后设置 HTTP 过期 header ,并在查询字符串中添加附加参数。只要 bundle 不改变,这个唯一标识符就会是相同的。请参阅here .

在浏览器上

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

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

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

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

Wikipedia has a great list .

关于asp.net - 自动刷新浏览器缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16963273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com