一点背景:我的应用程序基于 Polymer 2.x 构建,托管在不支持 HTTP/2 且没有 HTTPS 证书的服务器上。 我们必须支持IE11,Chrome,Firefox和Safari。
问题:我遇到了浏览器缓存问题。 我希望使用 Polymer CLI 生成的服务工作线程来处理缓存破坏。 但是,由于我们客户端的服务器没有启用HTTPS,因此我们无法使用它。 无论如何,我们必须在单个构建中支持 IE 11,因此服务工作者不是一种选择。
我想不出一种方法来破坏新部署上的缓存。 在 Polymer CLI github 页面上,有一个关于这个主题的未决问题,但自 2016 年以来没有任何关注。 通过观看Polymer上的YouTube视频,看起来有(或曾经有(一种方法可以使用Gulp拦截构建,但我似乎无法弄清楚。
任何帮助将不胜感激!
如果要使用gulp
构建 Polymer 项目,可以使用polymer-build
库。你可以在这里阅读它:
https://github.com/Polymer/polymer-build
在此处的文档中简要提及:
https://www.polymer-project.org/2.0/toolbox/build-for-production#use-polymer-build
然后你可以使用类似的东西缓存bustgulp-rev
,但你必须确保你没有重写自定义元素名称,只是重写文件名和导入路径。(我用gulp-rev-all
尝试过一次,默认情况下,它用<app-header-a9fe00>
或类似的东西替换<app-header>
。
创建构建运行时运行polymer build sw-precache-config.js
我创建了gulp-polymer-build来帮助解决这个问题。它借用polymer-cli build
代码,并支持您在polymer.json
中的构建配置。它允许您在构建之前修改源流,然后修改您在polymer.json
中配置的所有构建的分叉流。这使得使用gulp-rev
和gulp-rev-replace
进行资产版本控制变得容易。