缓存的有效时光是10秒。
最终在断定之外,我们的中心件把控制权交给下一?中心件。
最终应用和测试如下代码:
同样,我们应用了 npm 模块:memory-cache,它存在优缺点如下:
- 读写敏捷而简单,不须要其他依附;
- 当办事器或者这个过程挂掉落的时刻,缓存中的内容将会全部损掉。
- memcache 是精华存内容存放在了本身过程的内存中,所以这部分内容是无法在多个 Node.js 过程之间共享的。
- app.get('/', cache(10), (req, res) => {
- setTimeout(() => {
- res.render('index', { title: 'Hey', message: 'Hello there', date: new Date()})
- }, 5000) //setTimeout was used to simulate a slow processing request
- })
我应用了 setTimeout 来模仿一?超长(5s)的操作。
最终 Demo 代码,迎接拜访它的Github地址。
打开浏览器控制面板,发明在10秒缓存到期以内:
至于为什么 cache 中心件要那样子写、next() 为什么是中心件把控制权传递,我并不计算展开去讲。有兴趣的读者可以看一下 Express 源码。
还有几个小问题
细心看我们的页面,再去领会一下实现代码。也许细心的读者能发明一个问题:刚才的实现我们缓存了全部页面,并将 date: new Date() 传入了 jade 模版 index.jade 里。那么,在射中缓存的前提下,10秒内,页面无法动态刷新来同步,直到10秒缓存到期。
同时,我们什么时刻可以应用上述中心件,进行办事端缓存呢?当然是静态内容才可以应用。同时,PUT, DELETE 和 POST 操作都不该该进行类似的缓存处理。
如不雅这些弊病 really matter,在实际开辟中我们可以选择分布式的 cache 办事,比如 Redis。同样你可以在 npm 上找到:express-redis-cache 模块应用。
在真实的开辟场景中,办事端缓存已经成为 common sense,然则在 Node.js 的世界里,领会个中心件思惟,本身手动编写办事,同样乐趣无穷。
与实践相结合,我认为真正缓存全部页面(如同 demo 那样)并不是一个推荐的做法(当时实际场景实际分析),同样应用请求 url 作为缓存的 key 也有待推敲。比如,页面中的一些静态内容可能会在其他页面中反复应用到,复竽暌姑就成了问题。
推荐阅读
【51CTO.com原创稿件】自客岁戴尔将来就绪中国“随便率性云”计谋和将来就绪企业袈淦联盟正式颁布后>>>详细阅读
地址:http://www.17bianji.com/lsqh/37212.html
1/2 1