我们的应用中有几百个javascript文件,目前正在提供无压缩服务。我们获得更多客户端性能的解决方案之一就是缩小我们的javascript文件。我已经在构建时创建了一个自动化解决方案来执行此操作,但是,在部署这些新文件时,将更改确定是否将重新发送给客户端的文件时间戳。这意味着,在每个未来版本中,所有javascript文件都将具有新的时间戳。我们的客户将再次重新下载所有缩小的javascript文件,从而破坏缩小的性能方面。
这是其他人遇到过的问题吗?你的解决方案是什么?你有没有在你的项目中使用的非缩小和缩小的javascript文件,并且不在构建上执行缩小?
我们还有其他解决方案(比如只查找源代码管理库中实际更改的文件),但这是我想要了解其他人正在做什么的一个问题。
答案 0 :(得分:4)
您将不得不确定哪些文件实际已更改。或者只是不要担心它,并享受通过缩小文件获得的改进。无论如何,客户端可能无法长时间保存缓存中的文件,因此除非您非常频繁地更新文件,否则尝试管理缓存行为可能会收效甚微。
答案 1 :(得分:2)
您可以编写一个脚本来检查源文件夹和目标文件夹中每个文件的CRC或MD5哈希值,并且只在文件发生更改时才执行覆盖。这将保留未更改的文件的时间戳,从而为您提供所需的缓存行为。
同样,您可以记录上一个时间戳,进行覆盖,然后使用touch命令(假设这些文件位于unix系统上)将时间戳设置回原始值。
第一个选项可能更好,而不是盲目地将时间戳一直设置为相同的值,因为这可能意味着一些客户端暂时不会选择修改后的JS文件,因为服务器声称它没有'改变了。
答案 2 :(得分:0)
您可以在一段时间内滚动这些脚本文件,这样任何单个用户请求都不会花费太长时间。但严重的是,我们谈论了多少javascript?是一次性重新下载与您的页面相关的脚本真的那么重要吗?想想你需要付出多少努力才能完成这项工作并权衡利益。
答案 3 :(得分:0)
读取Flickr成名的Cal Henderson的http://www.thinkvitamin.com/features/webapps/serving-javascript-fast。希望你会发现它很有用。