当前位置: 首页 > 知识库问答 >
问题:

重置生产应用程序的浏览器缓存

王亮
2023-03-14

所以目前我有一个托管在亚马逊S3上的反应应用程序,它是通过云前沿CDN提供的,但是,每次我发布新的产品版本,最终用户都必须深度刷新整个页面(因为上一个版本的内容仍然保留在浏览器缓存中)。有没有什么我只能在发布产品版本时使CDN缓存和浏览器缓存无效。顺便说一句,我使用GitLab ci。

共有1个答案

越学博
2023-03-14

我们使用的是AwsPublish插件

const day = 86400;
  const farFuture = { 'Cache-Control': `max-age=${day * 365}` };
  const future = { 'Cache-Control': `max-age=${day * 7}` };
  const noCache = { 'Cache-Control': 'no-cache' };
  const gzipTypes = '**/*.{html,css,js,svg,ico,json,txt,wasm,map,mem}';
  const cacheBustedTypes = '**/*.{css,js,gif,jpeg,jpg,png,svg,webp,ttf,woff,woff2,wasm}';
  const cachedTypes = '**/*.{ico}';
  const noCacheTypes = '**/*.{html,json,xml,txt}';
  const otherTypes = ['**/*', `!${cacheBustedTypes}`, `!${cachedTypes}`, `!${noCacheTypes}`];

  const publisher = $.awspublish.create(awsSettings);

  const options = {
    force,
  };

  return gulp
    .src(source, { base })
    .pipe($.if(gzipTypes, $.awspublish.gzip()))
    .pipe($.if(cacheBustedTypes, publisher.publish(farFuture, options)))
    .pipe($.if(cachedTypes, publisher.publish(future, options)))
    .pipe($.if(noCacheTypes, publisher.publish(noCache, options)))
    .pipe($.if(otherTypes, publisher.publish(null, options)))
    .pipe($.if(sync, publisher.sync()))
    .pipe($.awspublish.reporter());
});

添加索引。noCacheTypes中的html。Webpack会为css和js文件生成chunkhash,一旦更改它们,缓存就会被破坏。我们在使用github操作的同时还使用了这个gulp脚本。

 类似资料:
  • 本文向大家介绍HTML5的应用程序缓存与浏览器缓存有什么不同?相关面试题,主要包含被问及HTML5的应用程序缓存与浏览器缓存有什么不同?时的应答技巧和注意事项,需要的朋友参考一下 应用程序缓存是 HTML5 的重要特性之一,提供了离线使用的功能,让应用程序可以获取本地的网站内容,例如 HTML、CSS、图片以及 JavaScript。这个特性可以提高网站性能,它的实现借助于 manifest 文件

  • 我尝试使用ETAG从api请求缓存json响应。我调用类似http://localhost:3000/api/config的代码,并获取: Thx响应。

  • 本文向大家介绍Html5应用程序缓存和Html浏览器缓存有什么区别?相关面试题,主要包含被问及Html5应用程序缓存和Html浏览器缓存有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 新的HTML5规范允许浏览器在连接客户端时预取一些或全部网站资产,如HTML文件、图像、CSS、JavaScript等。对于获取此内容,用户以前没有必要访问此内容。换句话说,应用程序缓存可以预取完全未被访问的

  • 本文向大家介绍如何刷新浏览器的应用缓存?相关面试题,主要包含被问及如何刷新浏览器的应用缓存?时的应答技巧和注意事项,需要的朋友参考一下 按F5或浏览器刷新按钮 浏览器会在请求中附加必要的缓存协商,但不允许浏览器直接使用本地缓存,它能够让 Last-Modified、ETag发挥效果,但是对Expires无效。 按Ctrl+F5或按Ctrl并点击刷新按钮 这种方式就是强制刷新,总会发起一个全新的请求

  • 推荐: http://www.cnblogs.com/skynet/archive/2012/11/28/2792503.html 304 Not Modified

  • 问题内容: 对于那些在生产环境中运行Go后端的人: 运行Go Web应用程序的堆栈/配置是什么? 除了人们使用标准库net / http包来保持服务器运行之外,在该主题上我还没有看到太多内容。我阅读了使用Nginx将请求传递到Go服务器的信息- 使用Go的 Nginx 在我看来,这有点脆弱。例如,如果重新启动计算机(没有其他配置脚本),服务器将不会自动重新启动。 是否有更可靠的生产设置? 除了我的