Javascript缩小缓存问题
我有ASP.NETMVC3应用程序。在使用MSBuild进行后期构建期间,我使用YUICompressor.Net缩小Javascripts和Css文件 生成的简化javascript文件是JSMin.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”)”> 现在的问题是在最终用户浏览器中缓存缩小版本,因此我们在te javascript/css中的新修复不会反映在最终用户浏览器中,因为这些文件使用相同的文件名进行缓存。我正在寻找一种干净的过程,它将构建版本号为JsMin1.0.js&CssMin1.1.js的小型javascript&Css文件,并自动更新下面的参考 link rel=“stylesheet”href=“@Url.Content(“~/Content/CssMin.css”)”type=“text/css”> script type=“text/javascript”src=“@Url.Content(“~/Scripts/JsMin.js”)”>Javascript缩小缓存问题,javascript,css,file,version,minify,Javascript,Css,File,Version,Minify,我有ASP.NETMVC3应用程序。在使用MSBuild进行后期构建期间,我使用YUICompressor.Net缩小Javascripts和Css文件 生成的简化javascript文件是JSMin.js和CssMin.css 我的母版页引用以下文件: link rel=“stylesheet”href=“@Url.Content(“~/Content/CssMin.css”)”type=“text/css”> script type=“text/javascript”src=“@Url.Co
非常感谢你的帮助。谢谢。您需要在CDN静态媒体资源URL中使用缓存破坏:
无法清除浏览器缓存。是。您需要更改url。否则,用户的浏览器cche可能会提供上次查看的版本。最好对资源进行版本设置,使版本字符串成为url的一部分。通常,您希望将此版本字符串放在路径或文件名中,而不是查询字符串中,以便它与所有代理和CDN配合使用。这无疑是一种痛苦。您不仅需要对文件进行版本设置,还必须确保您的链接都已更新,因此您需要手动更改它们,或者有一个构建过程或应用程序体系结构为您解决此问题 我有一个OSS项目,它在运行时缩小并合并css和js。该解决方案处理所有链接重写。唯一需要注意的是,当您更改内容时,您必须刷新RequestReduce缓存,这很容易从应用程序提供的仪表板执行 它还精灵和优化背景图像
查看更多信息 您可以使用这样的解决方案,该解决方案将负责浏览器缓存,并设置适当的etag头和维护版本。再说一次,我写了这个库,所以我有偏见:) 在我看来,最好使用散列而不是版本号。这样,您就不需要跟踪您所使用的版本
另外,您希望避免在查询字符串中添加版本号,因为某些代理不会缓存包含查询字符串的资源。只是想澄清一下:您是否正在寻找一种能够自动添加版本号(然后更新对其的引用)的工具?是的,某种工具只需很少的努力。感谢我不知道的信息。但是查询字符串附加方法的问题在某些浏览器版本(尤其是IE8)中失败。由于我们的网站是一个面向公众的网站,针对所有不同的可用浏览器类型和版本,寻找涵盖所有情况的方法。查询字符串方法不会失败。如果您提出其他要求,请解释您的比率。缓存js和css文件有问题…:o(谢谢Matt。这种方法似乎很有前途。让我试试看,我会回来的。顺便问一下,你能确认Etag是否能在所有不同的浏览器上工作(从较低版本到较高版本)?它应该能与任何符合RFC的Etag实现一起工作。也就是说,我已经用所有“现代”浏览器进行了测试浏览器,但没有测试旧的IE版本,但没有理由相信这会失败。