vue增加强缓存和版本号的实现方法
强缓存:
到底什么是强缓存?强在哪?其实强是强制的意思。当浏览器去请求某个文件的时候,服务端就在respone header里面对改文件做了缓存配置。缓存的时间、缓存类型都由服务端控制。
强缓存实现:
cache-control: max-age=315360000, public ,immutable
客户端和代理服务器都可以缓存该资源,在315360000秒(10年)的有效期内,如果有请求该资源的需求的话就直接读取缓存,statu code:200 ,即使用户做了刷新操作,也不向服务器发起http请求
参考文章"彻底弄懂强缓存与协商缓存"
index.html文件采用协商缓存,理由就是要用户每次请求index.html不拿浏览器缓存,直接请求服务器,这样就保证资源更新了,切记不要设置强缓存!!!
其他资源采用强缓存 + 协商缓存,理由就不多说了。
nginx配置
版本号管理在
.env.production 生产模式
.env.test 测试模式
VUE_APP_VERSION = T0.01 测试模式 VUE_APP_VERSION = V0.01 生产模式
在package.json配置了打包命令
npm run build 正式环境配V0.01版本号 npm run build:test 测试环境配T0.01版本号
通过webpack打包设置,name+版本号+时间戳.js
可以根据服务器设置强缓存,缓存静态文件
configureWebpack: { output: { // 输出重构 打包编译后的 文件名称 【模块名称.版本号.时间戳】 filename: `[name].${process.env.VUE_APP_VERSION}.${timeStamp}.js`, chunkFilename: `[name].${process.env.VUE_APP_VERSION}.${timeStamp}.js`, }, }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
vue.js编译时给生成的文件增加版本号
vue.js在生成相关js和css文件的时候,名称是通过HASH的方式进行生成的,但是每次生成的文件基本都是一样的,那么浏览器就会缓存这些文件,为了在更新的时候能够保证js和css文件能够更新,那么我们需要针对webpack的配置文件进行修改: 打开webpack.prod.conf.js文件进行如下操作 1.增加版本变量(版本号暂时用时间代替) var Version = new Date().getTime(); 2.修改要生成的js和css文件的配置项,把刚刚声明的版本拼接进要生成的文件名
-
vue增加强缓存和版本号的实现方法
强缓存: 到底什么是强缓存?强在哪?其实强是强制的意思.当浏览器去请求某个文件的时候,服务端就在respone header里面对改文件做了缓存配置.缓存的时间.缓存类型都由服务端控制. 强缓存实现: cache-control: max-age=315360000, public ,immutable 客户端和代理服务器都可以缓存该资源,在315360000秒(10年)的有效期内,如果有请求该资源的需求的话就直接读取缓存,statu code:200 ,即使用户做了刷新操作,也不向服务器发起h
-
如何管理Vue中的缓存页面
<keep-alive> <router-view /> </keep-alive> Vue中内置的<keep-alive>组件可以帮助我们在开发SPA应用时,通过把全部路由页面进行缓存(当然也可以有针对性的缓存部分页面),显著提高页面二次访问速度,但是也给我们在某些场景带来了困扰,其中包含两个主要矛盾: 缓存页面如何在合适的时机被销毁 (keep-alive组件提供了三个参数来动态配置缓存状态,但是作用有限,后面分析) 同一个路径如何缓存多个不同的页面(同
-
vue调用本地缓存方式(监视数据变更)
目录 vue调用本地缓存 深度监视 使用方法 vue监听缓存事件 在main创建缓存事件 在组件生命周期中 监听缓存事件并取值 在组件业务代码 进行缓存使用 vue调用本地缓存 深度监视 为了发现对象内部值的变化,可以再选项参数中指定deep:true; [监听数组的变动不需要这样] 使用方法 handler其值是true一个回调函数,即监听到变化时应该执行的函数 deep其值是true或false,确认是否为深入监听(一般监听时不能监听到对象属性值的变化,数组的值的变化可以监听到) immed
-
vue中,在本地缓存中读写数据的方法
1.安装good-storage插件 cnpm i good-storage --save 2.读/写的方法 common/js/cache.js: import storage from 'good-storage' const SEARCH_KEY = '__search__' const SEARCH_MAX_LENGTH = 15 // compare:findindex传入的是function,所以不能直接传val function insertArray(arr, val, comp
-
基于vue中keep-alive缓存问题的解决方法
vue开发的时候,我们经常会有这样的需求:开发一个详细页面来展示商品的详细信息,根据列表页传入的id进行请求,拿到对应的数据进行渲染. 但是一般在路由上都会加上keep-alive保持数据的状态,除非强制无缓存刷新,这就导致第一次进入详情页面时,可以在created中拿到id,但是返回后,再点击进入,就不会再走相应的生命周期了,无法拿到新的id 这时候可以使用vue的$destroy()方法 这是vue的一个生命周期,完全销毁一个实例.清理它与其它实例的连接,解绑它的全部指令及事件监听器. 不用
-
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
需求分析 背景: 1.数据列表页,滚动加载数据: 2.多条数据情况下,点击某一条,进入详细页进行编辑(修改,删除)操作: 3.保存返回上一页: 在上面的情况下,想要保持在上次浏览位置,并且保持数据是最新的: 解决办法 1.原始的办法:在点击详情页的时候,记住浏览位置,传递参数或者存到本地缓存,然后在详情页操作完毕后,返回的时候,路由守卫可以判断,是否详情页跳转回来的,然后让页面滚动到上次记录的位置: 思路是这样,实际操作很麻烦: 2.推荐办法:使用vue动态组件keep-alive,搭配路由守卫
-
浅谈Vue页面级缓存解决方案feb-alive(上)
feb-alive github地址 体验链接 使用理由 开发者无需因为动态路由或者普通路由的差异而将数据初始化逻辑写在不同的钩子里beforeRouteUpdate或者activated 开发者无需手动缓存页面状态,例如通过localStorage或者sessionStorage缓存当前页面的数据 feb-alive会帮你处理路由meta信息的存储与恢复 为什么开发feb-laive? 当我们通过Vue开发项目时候,是否会有以下场景需求? /a跳转到/b 后退到/a时候,希望从缓存中恢复页面
-
浅谈Vue页面级缓存解决方案feb-alive (下)
feb-alive github地址 体验链接 Vue页面级缓存解决方案feb-alive (上) 在剖析feb-alive实现之前,希望大家对以下基本知识有一定的了解. keep-alive实现原理 history api vue渲染原理 vue虚拟dom原理 feb-alive与keep-alive差异性 1. 针对activated钩子差异性 keep-alive配合vue-router在动态路由切换的情况下不会触发activated钩子,因为切换的时候组件没有变化,所以只能通过befor
-
示例vue 的keep-alive缓存功能的实现
本篇文章主要介绍了vue 的keep-alive缓存功能的实现,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指正. <keep-alive>是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM. <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们.和 <transition> 相似,<keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素
-
实用的 vue tags 创建缓存导航的过程实现
需求 是要做一个tag,当切换页面的时候保留状态. 效果图: 思路 既然涉及了router跳转,那我们就去查api 发现keep-alive,巧了就用它吧.这里我们用到了include属性,该属性接受一个数组,当组件的name名称包含在inclue里的时候就会触发keep-alive. import { Vue, Component, Watch, Mixins } from 'vue-property-decorator'; // 此处省略n行代码 // 这是个计算属性.(至于为什么这么写 这
随机推荐
- jQuery scroll事件实现监控滚动条分页示例
- extjs之去除s.gif的影响
- iOS字体抖动动画的实现代码
- Java中Map的遍历方法及性能测试
- 分析python服务器拒绝服务攻击代码
- file控件选择上传文件确定后触发的js事件是哪个
- java实现合并2个文件中的内容到新文件中
- Android使用RecyclerView实现今日头条频道管理功能
- Android 中三种启用线程的方法总结
- JavaScript中常用的六种互动方法示例
- java实现构造无限层级树形菜单
- Jquery 的扩展方法总结
- javascript 获取元素样式必杀技
- 雅虎公司C#笔试题(后半部份才是)
- python实现员工管理系统
- python 统计一个列表当中的每一个元素出现了多少次的方法
- 在VMware上创建虚拟机及安装Redhat Linux操作系统(图文教程)
- JAVA中通过自定义注解进行数据验证的方法
- Vue iview-admin框架二级菜单改为三级菜单的方法
- js实现秒表计时器