Web URL中的版本查询以绕过浏览器缓存

Web URL中的版本查询以绕过浏览器缓存,web,browser-cache,Web,Browser Cache,我正在编写一个可能会频繁更新的web应用程序,包括对css和js文件的更改,这些文件通常会被浏览器快速缓存 为了在不影响缓存性能的情况下让用户立即看到更改,我提出了以下系统: 每个资源文件都有一个版本。此版本附加了一个?符号,例如main.css变为main.css?v=147。如果我更改了文件,我会增加所有引用中的版本。(实际上,每次部署更新时,我可能只有一个脚本来增加所有资源的版本。) 我的问题是: 这是生产代码的合理方法吗?我错过什么了吗?(还是有更好的办法?) 问号是否会带来额外的开销?

我正在编写一个可能会频繁更新的web应用程序,包括对css和js文件的更改,这些文件通常会被浏览器快速缓存

为了在不影响缓存性能的情况下让用户立即看到更改,我提出了以下系统:

每个资源文件都有一个版本。此版本附加了一个?符号,例如main.css变为main.css?v=147。如果我更改了文件,我会增加所有引用中的版本。(实际上,每次部署更新时,我可能只有一个脚本来增加所有资源的版本。)

我的问题是:

  • 这是生产代码的合理方法吗?我错过什么了吗?(还是有更好的办法?)
  • 问号是否会带来额外的开销?如果更有效的话,我可以将版本号合并到文件名中

  • 这种做法听起来很合理。以下是需要考虑的几点:

    • 如果您有许多具有不同版本号的不同资源文件,那么对于开发人员来说,正确地管理所有这些文件并在正确的情况下增加它们可能需要相当大的开销。
      • 您可能需要为您的团队实施策略
      • 或者写一个CI任务来检查开发人员是否做对了
    • 您可以对所有文件使用一个版本号。例如,当您拥有整个应用程序的版本号时,您可以使用该版本号。
      • 它使开发人员无法“管理”版本
      • 它会更改每个部署上的链接

    根据您必须管理的资源文件数量,部署的频率与更改资源文件的部署频率以及对这些资源文件的请求数量,一种或另一种解决方案可能会更有效。这是一个权衡问题。

    感谢您的详细答复。是的,我相信在每次部署时增加一个全局版本是目前最简单和最有效的,因为该项目仍然相当小。