如果我听起来无知,这是我从来没有遇到的事情,所以请原谅我。
我遇到的基本问题是,在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>
答案 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。
在浏览器上
有许多快捷方式可以重新加载页面并绕过缓存: 例如:
还有很多方法可以完全禁用浏览器上的缓存。