强制JavaScript每天只重新加载一次

时间:2011-06-26 22:54:44

标签: javascript optimization browser-cache

如果JavaScript的?random 是当前日期 - 那么它是否会每天加载一次?

<script type="text/javascript" src="http://external.example.com/bookmarklet.js?random"></script>

我的问题的背景是我不希望它永远留在缓存中,但我也在寻找一种方法来节省一些带宽并加快速度。 感谢

5 个答案:

答案 0 :(得分:3)

在包含的js文件名的末尾添加日期或时间戳会使其在用户浏览器缓存后重新加载。

如果您想使用JavaScript制作此时间戳,您可以动态地包含外部js文件,如下所示:

var the_time = new Date();
var fileref=document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", "test.js?" + the_time.getDate() + the_time.getMonth() + the_time.getFullYear());
document.getElementsByTagName("head")[0].appendChild(fileref);

我选择从一天,一个月和一年制作时间戳,因此每天都会改变。

答案 1 :(得分:1)

如果你的页面是用PHP生成的,你可以这样做:

<script src="http://external.example.com/bookmarklet.js?<?php echo date('Ymd'); ?>"  type="text/javascript"></script>

答案 2 :(得分:0)

仅当该时间戳被调整到当天的某个时间(例如午夜)时。这不能用HTML完成,但我找到了一些可以完成这项工作的PHP:from PHP Freaks

答案 3 :(得分:0)

是的,这应该完全按照你的需要工作,只需注意你只写日期部分,没有时间。

答案 4 :(得分:0)

甚至比每天更好一次,我认为您需要在javascript更改时刷新客户端的缓存 - 或者在升级或重新启动应用程序时作为近似值。不确定PHP中的最佳实践是什么,但在Python中,我会在应用程序启动时生成随机数,将其存储在全局变量中,并在您提供的资源的每个URL中使用它,无论是JS还是CSS。像jQuery或YUI等库只需要在有新版本时重新加载,并且您可能希望从CDN提供它们。