如何在不更改文件的情况下将缩小的Javascript文件部署到web服务器's时间戳

How to deploy minified Javascript files to a web server without changing the file's Timestamp?

本文关键字:文件 服务器 web 时间戳 部署 缩小 情况下 Javascript      更新时间:2023-09-26

我们的应用程序中有数百个javascript文件,目前正在提供未压缩的服务。我们获得更多客户端性能的解决方案之一是缩小我们的javascript文件。我已经创建了一个自动化的解决方案来在构建时做到这一点,然而,当部署这些新文件时,决定是否将其重新发送到客户端的文件的时间戳将发生更改。这意味着,在未来的每个版本中,所有javascript文件都将有一个新的时间戳。我们的客户端将再次重新下载所有缩小的javascript文件,从而打破缩小的性能方面。

这是其他人遇到过的问题吗?你的解决方案是什么?您的项目中是否使用了单独的未缩小和缩小的javascript文件,并且不在构建中执行缩小?

我们还有其他解决方案(比如只在源代码管理存储库中查找实际更改的文件),但这是我想了解其他人在做什么的一个问题。

您必须确定哪些文件实际发生了更改。或者不用担心,享受缩小文件带来的改进。无论如何,客户端可能不会将文件保存在缓存中很长时间,因此,除非您非常频繁地更新文件,否则尝试管理缓存行为可能收效甚微。

您可以编写一个脚本,检查源文件夹和目标文件夹中每个文件的CRC或MD5哈希,并且只有在文件发生更改时才执行覆盖。这将保留未更改的文件的时间戳,为您提供所需的缓存行为。

类似地,您可以记录以前的时间戳,进行覆盖,然后使用touch命令(假设这些文件在unix系统上)将时间戳设置回其原始值。

第一个选项可能更好,而不是一直盲目地将时间戳设置为相同的值,因为这可能意味着一些客户端在一段时间内不会收到修改过的JS文件,因为服务器声称它没有更改。

您可以在一段时间内推出这些脚本文件,这样单个用户请求都不会花费过长的时间。但说真的,我们谈论的javascript有多少?一次性重新下载与您的页面相关的脚本真的有那么重要吗?想一想你要付出多少努力才能完成这项工作,并将其与收益进行权衡。

阅读http://www.thinkvitamin.com/features/webapps/serving-javascript-fast以Flickr闻名的Cal Henderson。希望你会发现它有用。