当前位置: 首页 > 编程笔记 >

vue项目强制清除页面缓存的例子

邵子平
2023-03-14
本文向大家介绍vue项目强制清除页面缓存的例子,包括了vue项目强制清除页面缓存的例子的使用技巧和注意事项,需要的朋友参考一下

异常描述:

支付宝中内嵌h5项目(vue框架开发),前端重新打包上传之后访问页面会导致页面空白、页面tab点击异常之类异常情况,需要手动清除支付宝缓存才可以正常访问。

解决方案:

在HTTP协议中,只有后端返回 expires 或 Cache-Control:max-age=XXX, 前端才缓存。

但在浏览器中,默认会对 html css js 等静态文件、以及重定向进行缓存,如果在HEAD头中指定:

<HEAD>
<METAHTTP-EQUIV="Pragma"CONTENT="no-cache">
<METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache">
<METAHTTP-EQUIV="Expires"CONTENT="0">
</HEAD>

浏览器不会缓存html,但是还是会对重定向缓存,并且这种方式并不规范,可能有的浏览器不支持。

我的最终解决方案是:

1) 对hash过的静态文件还是采用默认方式,客户端会缓存。

2)对html文件,返回时增加头:Cache-Control,必须每次来服务端校验,根据etag返回200或者304

对应的nginx配置如下:

upstream example-be {
  ip_hash;
  server unix:/run/example-be.sock;
}
server{
  listen 80; #监听端口
  server_name example.com

  # 后台api
  location ~ ^/api {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    include uwsgi_params;
    uwsgi_pass example-be;
  }

  # 前端静态文件
  location ~* \.(gif|jpg|jpeg|png|css|js|ico|eot|otf|fon|font|ttf|ttc|woff|woff2)$ {
    root /var/www/example-fe/dist/;
  }

  # 前端html文件
  location / {
    # disable cache html
    add_header Cache-Control 'no-cache, must-revalidate, proxy-revalidate, max-age=0';

    root /var/www/example-fe/dist/;
    index index.html index.htm;
    try_files $uri /index.html;
  }
}

由于浏览器缓存静态文件的时间不可控,我们可以在nginx上自己配置expires 1M(1个月)

# 前端静态文件

location ~* \.(gif|jpg|jpeg|png|css|js|ico|eot|otf|fon|font|ttf|ttc|woff|woff2)$ {
   root /var/www/example-fe/dist/;
   expires 1M;
   add_header Cache-Control "public";
 }

以上这篇vue项目强制清除页面缓存的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 有什么办法可以在页面上放置一些代码,以便当有人访问网站时,它会清除浏览器缓存,以便他们可以查看更改? 使用的语言:ASP.NET,VB.NET,当然还有HTML,CSS和jQuery。 问题答案: 如果这是关于和变化,一种方法是到“缓存无效”是通过附加像“ ”为每个版本的文件名。例如: 或者,在文件名之后执行此操作:

  • 问题内容: 这些天,我的应用程序一直在变化,因为我们的团队现在正在运行快速更新。 由于缓存,我们的客户并不总是拥有最新版本的代码。 那么有没有办法强制浏览器清除缓存? 问题答案: 您可以使用一种非常简单的解决方案,其中包括将哈希值附加到脚本文件中。每次部署App时,您都会通过gulp /grunt任务自动为文件提供不同的哈希值。例如,您可以使用gulp-rev。我在所有项目中都使用了这种技术,并且

  • 我的项目遇到了一些内存问题,所以我决定对一些部分进行压力测试,以查看一些性能度量。我正在使用Google的ConcurrentLinkedHashMap库作为LRU内存缓存。我的测试代码的相关部分如下所示: 当内存超过50%时,我将throttle(油门)标志设置为true(真)。我有一个监视线程,它每2秒进行一次测量。以下是我得到的数字: 由于某种原因,我没有看到LRU缓存的

  • 我使用Drupal 7最新的开发版本。 我已经安装了清漆和过期模块并设置它们。它们工作得很好,但是我有一个关于从清漆中删除缓存的问题。 问题是如何只删除索引(主页)页面的清漆缓存,而不删除其他页面的缓存。我看了清漆日志,发现每次Drupal执行命令时,整个清漆缓存都被删除了 此命令由varnish模块或expire模块执行,它表示删除主页(索引)页的缓存。但正如我看到的,它正在删除varnish中

  • 问题内容: 部署网站的新版本时,我需要清除所有APC缓存条目。APC.php有一个用于清除所有操作码缓存的按钮,但我看不到用于清除所有用户条目,所有系统条目或所有按目录条目的按钮。 是否可以通过命令行或其他方式清除所有缓存条目? 问题答案: 您可以使用PHP函数。 调用将清除系统缓存,而调用将清除用户缓存。

  • void clear_cache(string template [, string cache id [, string compile id [, int expire time]]]) This clears the cache for a specific template. If you have multiple caches for this template, you can cl