我想知道node.js是否在后续场景中使用缓存,或者是否存在模块:
当您有一个网络门户网站,它在首页显示20个带有图片的产品时,每次服务器必须从硬盘驱动器获取图像,或者最好从ssd获取图像。 对于每个单独的图像只是为了找到它服务器需要大约5-7毫秒。当你有50个用户同时访问起始页时需要20img * 5ms * 50 usr = 5000ms才能找到硬盘上的图像。
所以,如果有一种方法可以将所有常用的文件(如图像,css,html等)保存在内存中,那就太好了。所以你只需要定义缓存大小。例如50MB,module / node.js将常用文件保存在缓存中。
答案 0 :(得分:1)
Node.js本身(默认情况下)不进行任何缓存,虽然OS和其他低层元素(例如HDD)可以这样做,显着加快了连续读取。
如果要在nodejs中启用缓存的http响应,则会有一个http-cache
库 - https://www.npmjs.com/package/http-cache和request-caching
库 - https://www.npmjs.com/package/node-request-caching。对于缓存文件,您可以使用filecache
https://www.npmjs.com/package/filecache和提供静态文件 - serve-static
(https://www.npmjs.com/package/serve-static)。
如果你正在使用像Express这样的框架,那就不再那么简单 - 例如,在生产模式下运行Express会导致它缓存一些东西(比如模板或CSS)。另请注意,res.sendFile
将文件直接流式传输给客户(可能是代理服务器,例如nginx)
然而,即使是Express'网页(http://expressjs.com/en/advanced/best-practice-performance.html)也建议使用单独的代理:
缓存请求结果
提高绩效的另一个策略 生产是缓存请求的结果,以便您的应用程序 不要重复操作以反复提供相同的请求。
使用Varnish或Nginx等缓存服务器(另请参阅Nginx缓存) 大大提高了应用的速度和性能。
有关加速nodejs的其他建议,您可以查看https://engineering.gosquared.com/making-dashboard-faster或http://www.sitepoint.com/10-tips-make-node-js-web-app-faster/
答案 1 :(得分:0)
Nodejs上的内置Web服务器不实现任何内容缓存。和@ prc322一样,具体的答案取决于Nodejs(框架,中间件等)上的技术堆栈。另一方面,Nginx被更广泛地用作静态资产的Web服务器。通常它们以某种方式组合,静态资产是来自Nginx的服务器,应用程序逻辑(休息服务等)由Nodejs应用程序处理。内容缓存是HTTP协议标准的一部分,您可以通过在Web应用程序前设置varninsh之类的HTTP缓存来从中受益。