关于iis服务器下访问js时间戳错误
24 Sep 2014关于IIS服务器下js 自带时间戳问题
-
jQuery对Ajax封装的很严重,以至于我们都搞不清自己给服务器发送了什么东西。时间戳就是jQuery擅自给请求URL加上的参数,目的是防止缓存。但是这样擅自给URL加东西当然不行,有时候服务器只接受干净的URL,这是就要自己关闭jQuery自动加时间戳的功能。
-
在js加时间戳本来的母的是防止缓存,但有的时候在 linux 服务器下可以正常访问加时间戳的js,但是在window Server下面却无法访问,(一般情况下会报500 错误或者404(文件找不到)
(404和500错误残生的原因)
- 因为在windows server上的时间会与标准的格林时间相差8个时间,导致访问的js的时间戳不是正确的时间戳。
PS: 解决方法,因为windows Server 的时间比格林时间晚8小时,将windows server的时间往前调8小时,但是如果这样做的话,服务器上其他程序获取的时间,或者获取当前时间会早8小时。你需要对服务器的其他程序做设置。因为太烦碎(本人没有测试过,喜欢折腾的朋友可以尝试下。)
居然不能更改服务器的系统时间,我们只能想办法来去掉 ajax 加载时jquery 给js加的时间戳了
-
加时间戳的目的在于对这URL不缓存,我们只要设置允许缓存就可以让它不用时间戳。于是换成“$.ajax”,并且带上相应的参数来加载就可以正常加载到了。
$.ajax({ url:"http://hm.baidu.com/h.js?a855f89c898f1b86f43caea384f74651", dataType:"script",cache:true });
-
另外,“$.getScript”这个方法是受“$.ajaxSetup”影响的。如果整个网站中的其它Ajax请求的缓存是由自己服务器返回的HTTP头来管理的,那就可以直接开启全局的Ajax缓存。这样直接“$.getScript”时也不会再添加时间戳了。
<script type="text/javascript">$.ajaxSetup({cache:true});</script> // ajax请求页面加上面代码就可以了 $.ajaxSetup({cache:true}); //... <p style="color:red;margin-left:30px">不过一定要记住这个方法的前提是其它Ajax请求的缓存自己要把握住。如果不能把握就千万别用这个方法,设置全局的东西总是很危险的。</p>