返回顶部
首页 > 资讯 > 前端开发 > JavaScript >微信页面入口文件被缓存的示例分析
  • 662
分享到

微信页面入口文件被缓存的示例分析

2024-04-02 19:04:59 662人浏览 独家记忆
摘要

小编给大家分享一下微信页面入口文件被缓存的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!缓存对于前端页面来说,是加速页面

小编给大家分享一下微信页面入口文件被缓存的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

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

一般情况

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

<script src="//m.test.com/build/activity/js/commons.js?v=20170608"></script>

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

<script src="//m.test.com/build/activity/js/activity/201807/schoolbeauty/main.19315e5.js"></script>

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标签添加缓存设置

<!-- cache control: no cache -->
<meta Http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

微(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、缓存入口页面和保留上次浏览位置是否有关联呢?感觉关联度也不是那么大

补充:微信浏览器取消缓存的方法

一、通过url参数避免html文件缓存

请求同一个页面的时候,如果url后面的参数不一样,则不会调用微信缓存中的html页面,由此可以解决html页面的缓存问题。例如加个版本号或时间戳

www.xxx.com/home.html?v=1.0

二、避免css和js的缓存

以上工作完成之后,我们解决了html的缓存问题,但是通过访问nginx(或是其他工具)的日志发现,虽然带上了不同的参数,html确实不会缓存了,但是却没有js和css文件的请求。

猜测在这里,微信发现我们所请求的js和css文件在他的缓存里面有了,所以就直接打开缓存中的文件返回给了页面上。(所以这就坑爹了啊!!)

所以我们要在html文件的头部(head)处加上一些meta:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />

<meta http-equiv="Pragma" content="no-cache" />

<meta http-equiv="Expires" content="0" />

以上是“微信页面入口文件被缓存的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网JavaScript频道!

--结束END--

本文标题: 微信页面入口文件被缓存的示例分析

本文链接: https://lsjlt.com/news/76883.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 微信页面入口文件被缓存的示例分析
    小编给大家分享一下微信页面入口文件被缓存的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!缓存对于前端页面来说,是加速页面...
    99+
    2024-04-02
  • vue服务端渲染页面缓存和组件缓存的示例分析
    这篇文章将为大家详细讲解有关vue服务端渲染页面缓存和组件缓存的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue缓存分为页面缓存、组建缓存、接口缓存,这里我主...
    99+
    2024-04-02
  • 微信小程序缓之缓存时效性的示例分析
    这篇文章将为大家详细讲解有关微信小程序缓之缓存时效性的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。关于本地缓存1.wx.setStorage(wx.setSto...
    99+
    2024-04-02
  • 微信小程序页面路由的示例分析
    这篇文章将为大家详细讲解有关微信小程序页面路由的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。页面路由在小程序中所有页面的路由全部由框架进行管理。页面栈框架以栈的形式维护了当前的所有页面。当发生路...
    99+
    2023-06-26
  • 微信小程序中缓存过期时间的示例分析
    小编给大家分享一下微信小程序中缓存过期时间的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!关于本地缓存1.wx.setStorage(wx.setStorageSync)、wx.g...
    99+
    2024-04-02
  • 微信小程序页面生命周期的示例分析
    小编给大家分享一下微信小程序页面生命周期的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下页面生命周期函数onLo...
    99+
    2024-04-02
  • vue微信网页授权的示例分析
    这篇文章主要为大家展示了“vue微信网页授权的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue微信网页授权的示例分析”这篇文章吧。vue微信网页授权...
    99+
    2024-04-02
  • 微信小程序文件结构的示例分析
    这篇文章主要介绍微信小程序文件结构的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!文件结构小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。一个小程序主体部分由三个文件组成,必须放在项目的...
    99+
    2023-06-26
  • Vue页面级缓存解决方案feb-alive的示例分析
    这篇文章主要介绍Vue页面级缓存解决方案feb-alive的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!feb-aliveVue页面级缓存解决方案feb-alive (上)...
    99+
    2024-04-02
  • webpack4多入口、多页面项目构建的示例分析
    这篇文章给大家分享的是有关webpack4多入口、多页面项目构建的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。webpack核心概念Entry:入口,Webpack 执...
    99+
    2024-04-02
  • 微信小程序按钮点击跳转页面的示例分析
    这篇文章给大家分享的是有关微信小程序按钮点击跳转页面的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。微信小程序中,按钮也是<button></butto...
    99+
    2024-04-02
  • 小程序缓存插件的示例分析
    这篇文章主要为大家展示了“小程序缓存插件的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“小程序缓存插件的示例分析”这篇文章吧。背景wx.request是...
    99+
    2024-04-02
  • 如何解决微信浏览器缓存站点入口文件的问题
    这篇文章给大家分享的是有关如何解决微信浏览器缓存站点入口文件的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近开发的微信公众号项目中(项目采用Vue + Vux 构建,站点...
    99+
    2024-04-02
  • nodejs微信开发之接入的示例分析
    这篇文章主要为大家展示了“nodejs微信开发之接入的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“nodejs微信开发之接入的示例分析”这篇文章吧。内...
    99+
    2024-04-02
  • 微信小程序微信支付接入开发的示例分析
    这篇文章将为大家详细讲解有关微信小程序微信支付接入开发的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。内容如下:一、后台接口封装;二、小程序端整合;三、总结一、后...
    99+
    2024-04-02
  • 微信小程序页面间传递数组对象的示例分析
    这篇文章主要介绍了微信小程序页面间传递数组对象的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。方法1:A页面跳转链接添加参数,B页面...
    99+
    2024-04-02
  • 微信小程序和H5页面间相互跳转的示例分析
    这篇文章主要为大家展示了“微信小程序和H5页面间相互跳转的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序和H5页面间相互跳转的示例分析”这篇文...
    99+
    2024-04-02
  • 微信小程序页面滚动到指定位置的示例分析
    这篇文章主要介绍微信小程序页面滚动到指定位置的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!页面上有一个元素或者组件,id 为 comment则:var me&nb...
    99+
    2024-04-02
  • 微信小程序中函数定义、页面渲染的示例分析
    这篇文章主要为大家展示了“微信小程序中函数定义、页面渲染的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序中函数定义、页面渲染的示例分析”这篇文...
    99+
    2024-04-02
  • 微信小程序组件事件的示例分析
    这篇文章主要介绍了微信小程序组件事件的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。组件事件事件系统是组件间交互的主要形式。自定义组件可以触发任意的事件,引用组件的页...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作