对于部分网页进行服务端的缓存,可以获得更好的渲染性能,但是缓存又涉及到一个数据的及时性的问题,所以在及时性和性能之间要有平衡和取舍。

官方文档里面写的使用方法

按照这个配置,试过了没什么用,但是从文档的另外一个地方示例里的代码是能够正常运行的,需要配置的地方有两个:

在使用之前,这个缓存组件并没有默认集成,需要自己安装后才可以使用

npm install lru-cache -s

1.nuxt.config.js

module.exports = {
render: {
bundleRenderer: {
cache: require('lru-cache')({
max: 1000,
maxAge: 1000 * 60 * 15
})
}
}
}

2.vue页面上要配置一个单页的唯一key,通过serverCacheKey()方法返回这个唯一KEY,示例里面用一个时间值,每10秒变化一次来控制缓存的更新频率

<template>
<div>
<h1>Cached components</h1>
<p>Look at the source code and see how the timestamp is not reloaded before 10s after refreshing the page.</p>
<p>Timestamp: {{ date }}</p>
</div>
</template> <script>
export default {
name: 'date',
serverCacheKey () {
// Will change every 10 secondes
return Math.floor(Date.now() / 10000)
},
data () {
return { date: Date.now() }
}
}
</script>

在我按照文档完成这个范例后,刷新网页,其实这个date并没有10秒更新一次,github上已经有人提出这个问题了,按照作者的说法,如果是chrome浏览器可以通过view-source:http://localhost:3000/这个方式去验证,我试了一下的确是10秒更新一次。

我可能需要的是 asyncData() 通过异步获取其他服务器的数据能够被缓存起来,防止每次只要有用户访问网页,但是这个缓存的配置,并不是缓存了所有的信息,每次访问asyncData()还是会执行,然后服务器获取一遍数据....

lru-cache包含的功能可以自己实现这部分的功能,例如每次的get请求缓存

import axios from 'axios';
import LRU from 'lru-cache'; const cache = LRU({
max: 1000,
maxAge: 1000 * 10,
}); export const get = async (url) => {
let data = cache.get(url);
if (data) {
return JSON.parse(data);
}
const res = await axios.get(url);
data = res.data;
cache.set(url, JSON.stringify(data));
return data;
};

或者只对lru-cache进行一个简单的包装,在需要使用的地方再使用

// 运行与服务端的js
// node.js lru-cache
import LRU from 'lru-cache' const lruCache = LRU({
// 缓存队列长度
max: 2000,
// 缓存有效期
maxAge: 60000
}) export const cache = {
get: function (key) {
let result = lruCache.get(key) if (result) {
return JSON.parse(result)
} return null
},
set: function (key, value) {
if (value) {
lruCache.set(key, JSON.stringify(value)) return true
} return false
}
}

nuxt.js服务端缓存lru-cache的更多相关文章

  1. 服务端缓存HttpRuntime.Cache的使用

    HttpRuntime.Cache.Insert("缓存key", "缓存content", null, DateTime.Now.AddMinutes(3), ...

  2. Nuxt.js服务端渲染实践,从开发到部署

    感悟 经过几个周六周日的尝试,终于解决了服务端渲染中的常见问题,当SEO不在是问题的时候,或许才是我们搞前端的真正的春天,其中也遇到了一些小坑,Nuxt.js官方还是很给力的,提issue后很积极的给 ...

  3. nuxt.js服务端渲染中less的配置和使用

    第一步:npm 安装 less 和 less-loader ,文件根目录下安装,指令如下 npm install less less-loader --save-dev 第二步:直接在组件中使用 &l ...

  4. ASP.NET Core 与 Vue.js 服务端渲染

    http://mgyongyosi.com/2016/Vuejs-server-side-rendering-with-aspnet-core/ 原作者:Mihály Gyöngyösi 译者:oop ...

  5. node.js服务端程序在Linux上持久运行

    如果要想在服务端部署node.js程序,让其持久化运行,就不能单单使用npm start命令运行,当然了,这样运行是毫无问题的,但是当关闭xshell窗口或者是关闭进程的时候(其实关闭xshell窗口 ...

  6. NET Core 与 Vue.js 服务端渲染

    NET Core 与 Vue.js 服务端渲染 http://mgyongyosi.com/2016/Vuejs-server-side-rendering-with-aspnet-core/原作者: ...

  7. vue.js 服务端渲染nuxt.js反向代理nginx部署

    vue.js的官方介绍里可能提到过nuxt.js,我也不太清楚我怎么找到这个的 最近项目vue.js是主流了,当有些优化需求过来后,vue还是有点力不从心, 比如SEO的优化,由于vue在初始化完成之 ...

  8. Vue.js 服务端渲染业务入门实践

    作者:威威(沪江前端开发工程师) 本文原创,转载请注明作者及出处. 背景 最近, 产品同学一如往常笑嘻嘻的递来需求文档, 纵使内心万般拒绝, 身体倒是很诚实. 接过需求,好在需求不复杂, 简单构思 后 ...

  9. nuxt项目服务端渲染应用部署、使用pm2守护进程及遇到的问题处理

    服务端渲染应用部署应该先编译构建,然后再启动 Nuxt 服务,可通过以下两个命令来完成: nuxt build nuxt start 我们已经在pakage.json里配置好script命令 { &q ...

随机推荐

  1. Hadoop 解除 “Name node is in safe mode”(转)

    运行Hadoop程序时,有时候会报以下错误: org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Na ...

  2. ElasticSearch搜索demo

    ElasticSearch版本:1.4.1 分词:ik jdk:1.7.67 开发工具:Eclipse 系统:win7 忙活了几天,使用ES做成,就是页面有点丑,demo页面如下: 1.搜索主页 2. ...

  3. 深入剖析javaScript中的深拷贝和浅拷贝

    如何区分深拷贝与浅拷贝,简单来说,假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,如果B没变,那就是深拷贝:我们先看两个简单的案例: //案例1(深拷贝) var a ...

  4. python使用浮点类型float计算后,数值不对_20180827

    在练习时,输入如下代码: 结果不准确. 原因:https://blog.csdn.net/bitcarmanlee/article/details/51179572 浮点数一个普遍的问题就是在计算机的 ...

  5. mstsc远程桌面全频或自定义窗口

    近期发现自己的mstsc突然窗口变小,总是要繁琐的拖来拖去,现终于解决了,拿来分享一二! 参数一:mstsc /f   以全屏模式显示(操作一次,后面无需在设置,具体何原因要问微软了,可能是机器的分辨 ...

  6. 重置SQLSERVER表的自增列,让自增列重新计数【转】

    很多时候我们需要重置某个表的自增列,让自增列重新从1开始记数.最蠢的方法当然是把该表删掉再重新建表了.其实,还有其它的方法可以重置自增列的值: 方法一:使用TRUNCATE TABLE语句: TRUN ...

  7. sql server2016安装程序图

    今天终于有时间安装SQL Server2016正式版,下载那个安装包都用了一个星期 安装包可以从这里下载: http://www.itellyou.cn/ https://msdn.microsoft ...

  8. 关于docker容器内核参数修改问题

    以下内容截取自docker官方文档 地址:https://docs.docker.com/edge/engine/reference/commandline/run/#configure-namesp ...

  9. HTML、CSS、JS、JQ速查笔记

      一.HTML  1.编写html文件 a.格式 <!DOCTYPE html> <html> <head> <title>标题</title& ...

  10. [转]超全!iOS 面试题汇总

    转自:http://www.cocoachina.com/programmer/20151019/13746.html 1. Object-c的类可以多重继承么?可以实现多个接口么?Category是 ...