1

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

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

4

1 回答 1

2

我们所做的是有一个 php 脚本,它获取需要压缩和组合的文件并创建这些文件的 url。该脚本执行此操作,并创建所有文件版本号串联的哈希。哈希作为&hash=<hash>参数附加到 url。该脚本生成如下内容:

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

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

编辑:为了能够在生产中修复错误,我们还有一个参数debug=true可以告诉压缩器脚本实际上不压缩,只返回连接的脚本。

于 2012-12-17T22:24:24.783 回答