longleg_thy 2008-11-26 10:14
浏览 164
已采纳

关于浏览器处理新加入的JS,CSS方式原理

浏览器加载JS和CSS表面上看起来是很清楚的顺序加载,可是其中还是有很多的莫名其妙的东西。

浏览器缓存!!!!

我们是做产品的,采用B/S结构,使用了大量的JS和CSS。

每当产品出现Bug,或者升级的时候就会给客户发一个Patch(包含了JS,CSS,IMG,JAVA等等)

然后客户重启服务.

很沮丧!!

由于浏览器的缓存问题(我猜是)
导致了原有的(但是有修改)JS和CSS还是加载的旧的代码,没有把新打入的文件加载上,要强制的刷新,才会载入新的文件。

甚至有时候不去加载新的文件,旧的都不加载了。

CSS更是,导致的页面面目全非。

请问,大家碰见过这种问题吗?
还有,如何能让浏览器主动加载新的文件呢,别说改文件名哦!
最好也别不让用户开启缓存,由于加载的东西很多,要是有缓存还是很有用的。
特别是打完patch后,第一次重启,一定会出错,如何解决呢,帮解决了给高分哦!
[b]问题补充:[/b]
[quote]
而liuqiu的做法,导致整个页面不缓存,感觉划不来吧。

[/quote]

的确,如果强制不允许缓存是划不来的,因为加载的JS和CSS很多,缓存还是能很好的提高访问效率的;
[code="java"]
<br> [/code]</p> <p>这种方法每次后面的字符串是不同的,问一下,那是去找缓存还是去下载新的啊?<br> 还是只在打patch时候新的文件才去加这个呢?</p>

  • 写回答

3条回答 默认 最新

  • qichunren 2008-11-26 10:29
    关注

    [quote]浏览器缓存!!!![/quote]
    你就让它不能缓存呗,由于你新部署的js,css文件和先前的文件名一样,所以浏览器将其缓存了。
    可以这样解决:

    " 你用随机数可以,或者基于当前服务器时间也可以,随你。 这样的话,浏览器每一次请求web服务器,就会发现js,css等文件如之前是不同的,这样的话就会重新请求一下服务器去下载这个新的js,css文件。 在Rails中就是这么处理的,你现在打开javaeye的源代码看一下: [code="html"] <link href="http://www.iteye.com/stylesheets/ask.css?1227621142" media="screen" rel="stylesheet" type="text/css" /> <script src="http://www.iteye.com/javascripts/application.js?1219629801" type="text/javascript">

    [/code]

    而liuqiu的做法,导致整个页面不缓存,感觉划不来吧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?