Javascript最小化缓存问题

Javascript Minification Caching Issue

本文关键字:问题 缓存 最小化 Javascript      更新时间:2023-09-26

我有ASP。. Net MVC 3应用程序。我使用yuiccompressor。Net用于缩小javascript &

使用MSBuild构建后的Css文件。

生成的javascript压缩文件是jssmin .js和CssMin.css我的主页引用这些文件如下:

link rel="stylesheet" href="@Url.Content("~/Content/CssMin.css")" type="text/css">

script type="text/javascript" src="@Url.Content("~/Scripts/JsMin.js")">

现在的问题是缩小版得到缓存在最终用户的浏览器,所以我们在javascript/css的新修复没有反映在最终用户的浏览器,因为这些文件被缓存,因为它是使用相同的文件名。我正在寻找某种干净的过程,这将建立缩小的javascript &带有版本号的Css文件,如JsMin1.0.js &并自动更新下面

的引用

link rel="stylesheet" href="@Url.Content("~/Content/CssMin.css")" type="text/css">

script type="text/javascript" src="@Url.Content("~/Scripts/JsMin.js")">

非常感谢你的帮助。谢谢。

您需要在CDN静态媒体资源url中使用缓存破坏:

http://codebetter.com/karlseguin/2010/01/11/asp-net-performance-part-3-cache-busting/

无法清除浏览器缓存

是。您需要更改url。否则,用户的浏览器缓存可能会提供最后查看的版本。最好对资源进行版本化,以便版本字符串成为url的一部分。您通常希望将此版本字符串放在路径或文件名中,而不是放在查询字符串中,以便与所有代理和cdn配合良好。这无疑是一种痛苦。你不仅需要版本文件,还必须确保你的链接都是更新的,所以你要么需要手动更改它们,要么有一个构建过程或应用程序架构来为你处理这个问题。

我有一个OSS项目,RequestReduce,在运行时最小化和组合css和js。解决方案处理所有的链路重写。唯一的问题是,当你更改内容时,你必须刷新RequestReduce缓存,这很容易从应用程序提供的仪表板中完成。

它也精灵和优化背景图像。

查看http://www.requestreduce.com获取更多信息。

您可以使用https://github.com/vincpa/mvc.resourceloader这样的解决方案,它将处理浏览器缓存,设置适当的etag标头并维护版本。再说一次,这个库是我写的,所以我有偏见:)

在我看来,使用散列比使用版本号更好。这样你就不需要跟踪你的版本了。

另外,您希望避免在查询字符串中添加版本号,因为一些代理不缓存包含查询字符串的资源。