我有一个使用create-react-app构建的网站,并在Firebase Hosting上托管.如何指定浏览器缓存需要在新部署后更新,并且理想情况下仅适用于自上次部署以来已更改的页面,资产和样式表?
有没有办法访问部署ID并在标头中包含该(或任何其他唯一标识符),以便浏览器可以与本地存储或缓存中的内容进行比较,并确定是否需要进行硬刷新?我查看了Firebase部署以及完整配置文档,但没有提及如何访问托管元数据,如上次部署时间.
将Cache-Control值设置为max-age=[any number]似乎并不理想,因为它忽略了下一次部署何时发生(除非有常规计划,否则可能无法开始).
使用create-react-app(v1.0.13)启动.每当我更新源和重新部署用户需要硬刷新以获取新内容.我在index.html中包含了非缓存头:
<meta http-equiv="Cache-Control" content="no-store" />
并关闭了提供的服务人员.在部署之前,还要在build文件夹中更改.js文件名(以及index.html中的引用).
我一直在尝试使用灯塔报告来优化我的网页。
性能诊断工具之一说,可以增加我的静态文件的缓存寿命。
在报告中所指出的文件是main.js,polyfills.js,runtime.js和styles.css。据我了解,这些是我网页的主要内容。我当时在考虑使用角度服务工作者增加缓存。但是我找不到任何办法。
我发现增加缓存时间最接近的是角度服务工作者数据组。数据组支持缓存配置。
cacheConfig: {
maxSize: number;
maxAge: string;
timeout?: string;
strategy?: 'freshness' | 'performance';
};
Run Code Online (Sandbox Code Playgroud)
但我不知道如何对AssetGroups执行相同操作。据我了解,js和css文件属于AssetGroups。
这是灯塔报告屏幕截图。
我正在工作的网页是margvel.com,我在github上有代码。
我还使用Firebase进行托管。是否拥有或可以更改Firebase上的缓存策略?
如何延长这些文件的缓存寿命?
我正在创建一个部署在 firebase 上的 Angular8 通用应用程序。引用了这个网站Angular universal with firebase
当我在本地使用 Express 服务器运行并提供应用程序时,所有路由都将加载更新的元标记。当我在 firebase 上部署应用程序时,一切正常,但根路径上的元标记没有更新。它们对于所有其他路线都工作得非常好。当我打开检查元素时,元标记也会更新。我添加了一些配置,以便不在 firebase.json How to Prevent caching for the index.html of an SPA上缓存 html 文件,并将 server.ts 文件中的“cache”值设置为“No-cache”,如下所示
app.get('*', (req, res) => {
res.set('Cache-Control', 'public, max-age=0, s-maxage=0, no-cache');
res.render('index', { req });
});
Run Code Online (Sandbox Code Playgroud)
但对我来说没有任何作用。请帮忙。
firebase-hosting google-cloud-functions angular-universal angular angular8