vue服务端渲染页面缓存和组件缓存的实例详解


Posted in Javascript onSeptember 18, 2018

vue缓存分为页面缓存、组建缓存、接口缓存,这里我主要说到了页面缓存和组建缓存

页面缓存:

在server.js中设置

const LRU = require('lru-cache')
const microCache = LRU({
 max: 100, // 最大缓存的数目
 maxAge: 1000 // 重要提示:条目在 1 秒后过期。
})
 
const isCacheable = req => {
 //判断是否需要页面缓存
if (req.url && req.url === '/') {
 
 return req.url

} else {
 
return false

}
}
app.get('*', (req, res) => {
const cacheable = isCacheable(req)

if (cacheable) {


const hit = microCache.get(req.url)
 

if (hit) {
  
return res.end(hit)

}
 }
const errorHandler = err => {
 if (err && err.code === 404) {
  // 未找到页面
  res.status(404).sendfile('public/404.html');
 } else {
  // 页面渲染错误
  res.status(500).end('500 - Internal Server Error')
  console.error(`error during render : ${req.url}`)
  console.error(err)
 }
}
const context = {
 title: 'vue',
 keywords: 'vue-ssr服务端脚手架',
 description: 'vue-ssr-template, vue-server-renderer',
 version: v,
 url: req.url,
 cookies: req.cookies
}
renderer.renderToString(context, (err, html) => {
 if (err) {
  return errorHandler(err)
 }
 res.end(html)
 microCache.set(req.url, html) // 设置当前缓存页面的内容
})
})

组建缓存:

在server.js中设置如下:

function createRenderer(bundle, template) {
 return require('vue-server-renderer').createBundleRenderer(bundle, {
  template,
  cache: LRU({
   max: 1000,
   maxAge: 1000 * 60 * 5 // 组建缓存时间
  })
 })
}
let renderer
if (isProd) {
 // 生产环境使用本地打包文件来渲染
 const bundle = require('./output/vue-ssr-bundle.json')
 const template = fs.readFileSync(resolve('./output/index.html'), 'utf-8')
 renderer = createRenderer(bundle, template)
} else {
 // 开发环境使用webpack热更新服务
 require('./build/dev-server')(app, (bundle, template) => {
  renderer = createRenderer(bundle, template)
 })
}

 要缓存的组建

export default {
 name: 'Home',
 title() {
  return {
   title: 'vue-ssr',
   keywords: 'vue-ssr服务端脚手架, home',
   description: 'vue-ssr-template, vue-server-renderer, home'
  }
 },
 created() {
 },
 computed: {},
 asyncData({ store }) {},
 methods: {},
 serverCacheKey: props => props.id
}

serverCacheKey 返回的 key 应该包含足够的信息,来表示渲染结果的具体情况。如果渲染结果仅由 props.item.id 决定,则上述是一个很好的实现。但是,如果具有相同 id 的 item 可能会随时间而变化,或者如果渲染结果依赖于其他 prop,则需要修改 serverCacheKey 的实现,以考虑其他变量。如果 serverCacheKey返回常量将导致组件始终被缓存,这对纯静态组件是有好处的。

总结

以上所述是小编给大家介绍的vue服务端渲染页面缓存和组件缓存的实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript 应用类库代码
Jun 02 Javascript
asp.net中System.Timers.Timer的使用方法
Mar 20 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
Oct 15 Javascript
模拟一个类似百度google的模糊搜索下拉列表
Apr 15 Javascript
一张Web前端的思维导图分享
Jul 03 Javascript
HTML页面,测试JS对C函数的调用简单实例
Aug 09 Javascript
BootStrap Table 获取同行不同列元素的方法
Dec 19 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
Aug 31 Javascript
微信小程序 按钮滑动的实现方法
Sep 27 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
Jun 22 Javascript
BootstrapValidator实现表单验证功能
Nov 08 Javascript
Vue 的 v-model用法实例
Nov 23 Vue.js
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
Sep 18 #Javascript
vue服务端渲染添加缓存的方法
Sep 18 #Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
Sep 18 #Javascript
微信小程序开发之路由切换页面重定向问题
Sep 18 #Javascript
在小程序中使用canvas的方法示例
Sep 17 #Javascript
webpack4打包vue前端多页面项目
Sep 17 #Javascript
node中的密码安全(加密)
Sep 17 #Javascript
You might like
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
python中readline判断文件读取结束的方法
2014/11/08 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
Python中如何导入类示例详解
2019/04/17 Python
wxpython绘制音频效果
2019/11/18 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
python创建子类的方法分析
2019/11/28 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
财务部出纳岗位职责
2013/12/22 职场文书
大学毕业感言50字
2014/02/07 职场文书
保护环境倡议书范文
2014/05/13 职场文书
局火灾防控工作方案
2014/05/25 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
Nginx缓存设置案例详解
2021/09/15 Servers