所以,我想给我的CSS和JS文件添加版本控制。我希望通过在资源路径的末尾附加查询字符串来实现这一点。
/foo/bar/baz.css
成为/foo/bar/baz.css?version=1
这对于代理和浏览器缓存是有效的,但我想知道Akamai是否会知道这是一个新文件并从源服务器重新请求它? 我的假设是它会从源服务器重新请求该文件,但想知道是否有人确定过。
所以,我想给我的CSS和JS文件添加版本控制。我希望通过在资源路径的末尾附加查询字符串来实现这一点。
/foo/bar/baz.css
成为/foo/bar/baz.css?version=1
这对于代理和浏览器缓存是有效的,但我想知道Akamai是否会知道这是一个新文件并从源服务器重新请求它? 我的假设是它会从源服务器重新请求该文件,但想知道是否有人确定过。
是的。它精确匹配所有GET请求的URL。
不完全正确。这取决于CDN的配置。查询字符串通常不是缓存键的一部分。因此,在设置CDN交付配置时,请确保显式添加选项以将查询字符串作为缓存键的一部分包括在内。否则,你将因具有不基于查询字符串值(在这种情况下为asset版本)变化的缓存键而提供不一致的版本。
我更喜欢像'/css/DEVELOPER_BASE/foo/baz/style.css'这样的URL。
您的构建/部署脚本会全局查找并替换'/css/DEVELOPER_BASE/'为'/css/[version_number]/'
为了使其工作,您有两个选择。
这将使您无需担心浏览器和CDN如何处理查询参数。