【发布时间】:2017-07-11 02:26:47
【问题描述】:
我想知道是否可以在访问应用程序时启用自动清除浏览器中的缓存?问题是,有时当用户在浏览器中访问新发布的 asp.net mvc 站点时,他们需要清除浏览器缓存以查看新站点,因为该站点的先前版本是在浏览器中反映的站点。我不知道这样做的正确方法。有人可以阐明一下吗?非常感谢!
【问题讨论】:
标签: asp.net-mvc iis web browser
我想知道是否可以在访问应用程序时启用自动清除浏览器中的缓存?问题是,有时当用户在浏览器中访问新发布的 asp.net mvc 站点时,他们需要清除浏览器缓存以查看新站点,因为该站点的先前版本是在浏览器中反映的站点。我不知道这样做的正确方法。有人可以阐明一下吗?非常感谢!
【问题讨论】:
标签: asp.net-mvc iis web browser
当您说清除缓存时,我假设您的意思是 js 和 css 文件
如果是这样,一种方法是在需要刷新时,给它一个不同的 url
这可以通过在查询字符串中附加一个版本号来实现,例如:
my.js?v=1.0
所以当它更新到 v2 时将其更改为
my.js?v=2.0
my.js 也会更新
css 文件也一样
【讨论】:
正确的方法是在您的网站中实现Cache Busting。
缓存破坏是附加某种形式的文件版本的过程 散列到 JavaScript 和 CSS 文件等资源的文件名
它会自动处理缓存以获得性能(如果文件未更改)并且如果文件更改将不允许缓存。
如果您使用bundling and minification in asp.net,那么这也会为您处理。
asp.net 捆绑创建的 url 包含一个查询字符串对,例如 v=r0sLDicvP58AIXN_mc3QdyVvVj5euZNzdsa2N1PKvb81
查询字符串 v 有一个值标记,它是使用的唯一标识符 用于缓存。只要捆绑包不变,ASP.NET 应用程序将使用此令牌请求 AllMyScripts 包。如果 捆绑中的任何文件更改,ASP.NET 优化框架 将生成一个新令牌,保证浏览器请求 bundle 会得到最新的 bundle
【讨论】:
你试过了吗
// Stop Caching in IE
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
// Stop Caching in Firefox
Response.Cache.SetNoStore();
【讨论】: