【问题标题】:Browser cache invalidation of javascript file without changing the src URLjavascript文件的浏览器缓存失效而不更改src URL
【发布时间】:2018-08-31 19:52:45
【问题描述】:

多个 JS 文件(由我托管)作为我无权访问的脚本标签嵌入到各种网站的代码中。因此,我无法通过在 URL 中维护指纹或通过 URL 参数来使缓存无效。

文件很大,所以缓存是必须的。除了修改src之外,还有哪些方法可以使浏览器缓存失效?

我现在考虑的解决方案是维护一个未缓存的包装脚本,它调用实际的脚本。通过这种方式,我可以在包装脚本中维护某种版本控制。这似乎不太优雅,还有其他方法吗?

如果这些都不起作用,我会考虑减少 expires 标头。

我已经进行了其他优化,例如缩小、使用 CDN 等。

【问题讨论】:

    标签: javascript caching browser-cache


    【解决方案1】:

    您使用包装脚本的解决方案可能是最佳解决方案。

    文档 DOM 中的一个主脚本,它调用您的包装脚本以在加载时附加适当的脚本。

    您可以使用requirejs 之类的东西来管理它,它还根据以下内容内置了一些缓存破坏:Prevent RequireJS from Caching Required Scripts

    【讨论】:

    • 我将研究使用 requirejs 来构建包装脚本。
    【解决方案2】:

    调用实际脚本

    为什么不直接从入口点 URL 返回 302 响应?

    (302 响应本身可以被缓存 - 在您的场景中这应该是很短的时间)

    【讨论】:

    • 我不确定 302 重定向在这种情况下会有什么帮助,您能详细说明一下吗?
    • 您的合作伙伴指向yoursite.com/content,该 URL 返回一个可缓存(和代理缓存)302 响应,该响应(例如)在下一个星期四(即 7 天 TTL)到期URL yoursite.com/content.20180903a 可无限期缓存。这对每周的第一次点击(1 个额外的 RTT)有更高的成本,但这意味着您只有在版本更改时才会有带宽成本。
    猜你喜欢
    • 2011-01-11
    • 2017-10-21
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多