版本javascript的常用方法是什么,以获得最大的缓存性能?

时间:2012-12-17 22:15:34

标签: javascript web apache2 browser-cache

我们正在托管一个包含多个javascript文件的PHP应用程序。目前,我们通过在javascript文件的url中附加get参数(时间戳)来破坏缓存,即:http://ourserver.com/scripts/something.js?cachebust=1289438903

随着文件数量的增加,应用程序的性能下降。从js构建系统到apache2配置,我们可以使用哪些解决方案来缓解这个问题?哪些选项需要对我们的应用程序代码和当前开发工作流程进行最少量的更改?

1 个答案:

答案 0 :(得分:2)

我们所做的是拥有一个php脚本,该脚本可以获取需要缩小和组合的文件并创建这些文件的URL。该脚本执行该操作,并且还创建所有文件的版本号的串联的散列。哈希作为&hash=<hash>参数附加到网址。该脚本生成如下内容:

http://path/to/minifier/script.php?files=core.js,somecode.js,someothercode.js&hash=da39a3ee5e6b4b0d3255bfef95601890afd80709.

这是发送给客户端的,浏览器会执行请求。 minifier脚本获取参数,缩小它们(或从缓存中获取它们),连接它们并将它们发回。因为哈希是脚本版本的函数,所以当其中一个文件发生更改时,它将被更新。并且由于版本仅在文件更改时发生更改,因此不会发生不必要的缓存故障。有多个脚本可以执行此操作。我们使用wro4j(在java中),但是PHP脚本存在。

编辑:为了能够在生产中修复错误,我们还有一个参数debug=true,它将告诉minifier脚本实际上没有缩小并只返回连接脚本。