Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript缩小缓存问题_Javascript_Css_File_Version_Minify - Fatal编程技术网

Javascript缩小缓存问题

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

我有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”)”>


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

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


无法清除浏览器缓存。

是。您需要更改url。否则,用户的浏览器cche可能会提供上次查看的版本。最好对资源进行版本设置,使版本字符串成为url的一部分。通常,您希望将此版本字符串放在路径或文件名中,而不是查询字符串中,以便它与所有代理和CDN配合使用。这无疑是一种痛苦。您不仅需要对文件进行版本设置,还必须确保您的链接都已更新,因此您需要手动更改它们,或者有一个构建过程或应用程序体系结构为您解决此问题

我有一个OSS项目,它在运行时缩小并合并css和js。该解决方案处理所有链接重写。唯一需要注意的是,当您更改内容时,您必须刷新RequestReduce缓存,这很容易从应用程序提供的仪表板执行

它还精灵和优化背景图像


查看更多信息

您可以使用这样的解决方案,该解决方案将负责浏览器缓存,并设置适当的etag头和维护版本。再说一次,我写了这个库,所以我有偏见:)

在我看来,最好使用散列而不是版本号。这样,您就不需要跟踪您所使用的版本


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

只是想澄清一下:您是否正在寻找一种能够自动添加版本号(然后更新对其的引用)的工具?是的,某种工具只需很少的努力。感谢我不知道的信息。但是查询字符串附加方法的问题在某些浏览器版本(尤其是IE8)中失败。由于我们的网站是一个面向公众的网站,针对所有不同的可用浏览器类型和版本,寻找涵盖所有情况的方法。查询字符串方法不会失败。如果您提出其他要求,请解释您的比率。缓存js和css文件有问题…:o(谢谢Matt。这种方法似乎很有前途。让我试试看,我会回来的。顺便问一下,你能确认Etag是否能在所有不同的浏览器上工作(从较低版本到较高版本)?它应该能与任何符合RFC的Etag实现一起工作。也就是说,我已经用所有“现代”浏览器进行了测试浏览器,但没有测试旧的IE版本,但没有理由相信这会失败。