nginx 缓存是 Web Server 常见的缓存方案,其自身的缓存机制足以满足大部分网站的需求。但有一些站点的数据访问频率极高,缓存命中率不太高,而且不同地域访问不同的 CDN 服务商,这些站点可能需要调用某种方案在机器本地开启缓存。
此时可以考虑使用 cacheswitcher - 一种可以开启本地本地缓存方案的中间件。
安装
npm install cacheswitcher
使用
-- -------------------- ---- ------- ----- ---- - --------------- ----- ------------- - ------------------------ ----- --------- - ------------- ----- ------ - ----------------------- ---- -- - ------------------ ---- ------------ ------------------ -------------- ------- -- -------------------
一旦添加了 cacheswitcher 中间件,每个请求都会在静态文件存储路径中查找匹配的文件,若匹配,则返回给客户端,否则执行后续的操作。
配置
常见的配置有以下几个:
cachePath
: 指定缓存静态文件的文件夹路径,例如:/cache/path
defaultExpireTime
: 指定缓存的默认时长,例如:60 * 60 * 24 * 30
cacheRules
: 缓存控制规则,例如:
{ '/api/*': (req, res, {cache}) => { cache.immutable() }, '/static/*': (req, res, {cache}) => { cache.maxAge(60 * 60 * 24 * 365) } }
这个配置意味着:静态文件夹下的 /api/*
目录下的文件比如图片将不做缓存,而访问 /static/*
目录下的文件时缓存时间为一年,其间请求不再与服务器交互。
原理
cacheswitcher 会拦截请求并查找是否有静态文件匹配。如果存在该文件,则直接返回静态文件并结束整个过程。否则,执行通常的调用栈。
学习与指导意义
cacheswitcher 具有一定程度的灵活性,可以根据自己的需求来定制缓存规则。如果要进行细粒度的缓存控制,只需给予更多时间去实现 cacheRules。
另外,cacheswitcher 使得前段开发人员可以直接操作缓存,更好的理解 nginx 等其他缓存基础知识。在促进自身能力不断前行的同时,也推动了前端开发在优化和改进网站缓存管理方面的发展。
示例代码
查看 Github 代码库。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066c90ccdc64669dde5804