缓存对于前端页面来说,是加速页面加载的利器之一,但也同时带来了很多问题,比如新版本发布之后,怎么替换客户端上的缓存文件呢?大家一般的的解决方案主要有以下几种形式,

一般情况

1、添加版本号,在静态资源文件的引用链接后面添加版本号,这样每次发布的时候更新版本号,就能让叫客户端加载新的资源文件,避免再次使用缓存的老文件,如

2、文件名使用hash形式,webpack中打包文件可直接生成,这样每次打包发布的时候都会产生新的hash值,区别于原有的缓存文件

3、服务器及缓存头设置,不使用缓存,如

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js)$ {

root /mnt/dat1/test/tes-app;

#### kill cache

add_header Last-Modified $date_gmt;

add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

if_modified_since off;

expires off;

etag off;

}

4、在html的meta标签添加缓存设置

微(keng)信(die)浏览器

微信浏览器下比较特殊,这个bug一样的存在居然把入口文件html给缓存下来了,这就意味着通过版本号和hash号的形式避免缓存的方案失效了。同时html的meta设置依旧没能生效。

方案一(部分框架无效)

最开始碰到这个问题,我在想是不是可以给入口文件的html加一个版本号,比如

https://m.test.com/views/index?v=1538208193491

理论上来说,这样应该是可以的,但发现没有用。分析原因可能是vue+nginx的形式下,所有的路由都被try_files解析到index.html

location / {

root /mnt/dat1/test/tes-app;

index index.html index.htm;

try_files $uri $uri/ /index.html;

}

这个解析的过程中版本号已经失效了,因此没能达到替换缓存的目的。至于其他的框架下,比如ftl、jsp那种模版编译的有可能生效,不过需要大家自己去验证了。

方案二(有效)

再换一种方案,更改服务器配置,强制不缓存入口文件,其他静态正常缓存,比如在nginx中对静态部分如下

location / {

root /mnt/dat1/test/tes-app;

index index.html index.htm;

try_files $uri $uri/ /index.html;

#### kill cache

add_header Last-Modified $date_gmt;

add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

if_modified_since off;

expires off;

etag off;

}

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js)$ {

root /mnt/dat1/test/tes-app;

access_log off;

expires 30d;

}

最终经过测试,这种方式可以解决微信下入口文件被缓存的问题,问题解决~~

题外话

说到这里,微信浏览器为什么要缓存html文件呢?

1、难道也是加速页面加载?并不见得是这个原因,因为这可能带来的问题大于带来的优化效果。

2、缓存入口页面和保留上次浏览位置是否有关联呢?感觉关联度也不是那么大

这个问题如果大家有什么好的想法,快来一起讨论讨论呗~~

php微信页面缓存数据,微信页面入口文件被缓存解决方案相关推荐

  1. 微信html页面缓存问题,浅谈微信页面入口文件被缓存解决方案_简单_前端开发者...

    缓存对于前端页面来说,是加速页面加载的利器之一,但也同时带来了很多问题,比如新版本发布之后,怎么替换客户端上的缓存文件呢?大家一般的的解决方案主要有以下几种形式, 一般情况 1.添加版本号,在静态 l ...

  2. js打开服务器缓存文件夹路径,浅谈微信页面入口文件被缓存解决方案

    缓存对于前端页面来说,是加速页面加载的利器之一,但也同时带来了很多问题,比如新版本发布之后,怎么替换客户端上的缓存文件呢?大家一般的的解决方案主要有以下几种形式, 一般情况 1.添加版本号,在静态资源 ...

  3. java list数据的更新_新增页面提交数据 list页面没有更新数据

    工作共遇到一个问题 ,新增页面提交数据 list页面没有更新数据,需要手动刷新数据才会提交展示出来.在页面试过很多刷新的方法都不是很好使,求大神解答.代码如下: add:的页面代码 rel=" ...

  4. 网页自动切换html css js,HTML页面自动清理js、css文件的缓存(自动添加版本号)_HTML/Xhtml_网页制作...

    这篇文章主要介绍了HTML页面自动清理js.css文件的缓存(自动添加版本号),小编觉得挺不错的,现在分享给大家HTML源码,也给大家做个参考.对HTML感兴趣的小伙伴们一起跟随小编过来看看吧 在we ...

  5. guava缓存数据到本地_扩展Guava缓存以溢出到磁盘

    guava缓存数据到本地 缓存使您可以轻松地显着加速应用程序. Java平台的两种出色的缓存实现是Guava缓存和Ehcache . 尽管Ehcache功能丰富得多(例如其Searchable API ...

  6. html表单向本页面提交数据,从页面提交表单数据的步骤之(一)

    从页面提交表单数据的方法之(一) 先说下开发中我使用的主要web利器: Bootstrap AdminLTE Jquery vue.js underscore.js 简介 利用表单给服务器提交数据是网 ...

  7. php 微信解析xml数据,微信公众平台开发实例 PHP开发 代码挂载SAE平台(六)星座物语 php解析xml文件...

    今天带来的是查询每日星座运势的功能,这个功能非常简单,在微信平台上输入星座名称加一个标识符(例如"+"号),后台程序匹配这个标识符调用相应的功能. 具体流程上:1.使用字符串分割函 ...

  8. layui登录页面写入数据_layui 页面保存数据

    子页面上面有 保存按钮 // MemAdd: function () { // admin.popup({ // title: '添加项目角色' // , area: ['700px', '400px ...

  9. Hive中数据倾斜和小文件过多的解决方案

    数据倾斜: 任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成.因为其处理的数据量和其他reduce差异过大. 原因:某个reduce的数据 ...

  10. 手机 html5 返回 页面不刷新,微信自带浏览器物理返回不刷新问题

    问题描述与需求 非单页面应用: 在页面A,通过get方式进入页面B之后再回到页面A,这个时候微信iOS版页面不刷新,安卓版微信刷新页面 ---> 所有物理返回都必须强制刷新重新进入页面: 在页面 ...

最新文章

  1. Java SE 重点知识笔记
  2. java text 格式化_java.text.DecimalFormat类十进制格式化
  3. php 生命变量,深入理解PHP原理之变量生命期(一)
  4. 程序人生:半路转行再来学软件测试,能够成为大牛吗?
  5. php中mbsubstr汉字,php中文字符串截取(mb_substr)实例
  6. Redis(1)——NoSQL数据库简介
  7. 苹果CMSv10自适应短视频原创挖片网高端手机+电脑模板
  8. windows7破解登陆密码
  9. jsp之getParameterValues
  10. 街区最短路径问题——曼哈顿距离
  11. Seaborn实战案例 | 绘制分类条形统计图
  12. Radiology:影像组学:图像不仅仅是图片,它们还是数据
  13. 不需要登录微信,发送消息python
  14. 应届生入职半年被裁员了,我该怎么办?
  15. java毕业设计线上办公工作流系统mybatis+源码+调试部署+系统+数据库+lw
  16. i12蓝牙耳机使用说明书图片_蓝牙耳机使用常见问题
  17. 【松岩早盘视点】2019-9-19
  18. 军犬舆情每日热点:LIGO发现最大黑洞;智能锁广告侮辱拆弹战士
  19. Kali2022 系统语言怎么切换中文
  20. 关于使用GPS天线需要注意的事项

热门文章

  1. vi vim 查找和替换字符串 命令
  2. 关于阿克曼函数(akermann)非递归算法的一点见解 c++
  3. URL传递参数长度限制
  4. GB35114---认证报告
  5. 三星android rom开发者,三星s10刷机包安卓10(极光AuroraROM 13.0)
  6. Swift和Object-C的区别和优缺点
  7. matlab内建函数怎么不同颜色,matlab分段函数不同颜色绘图
  8. android利用itext5制作pdf,Itext5生成PDF
  9. 富文本编辑器内容存储至Mysql
  10. 模拟电路电源芯片PROTUES