Nodejs怎样在客户端实现静态资源的缓存?
Nodejs怎样在客户端实现静态资源的缓存?
初级阶段新手,请求各位不吝分享想法和经验!!!
1.利用 http cache
2.利用 js 的 localstorage
1 这和 node 无关
2 如果用 html5 的 localStorage 注意小米是持有专利的
小米还有这专利???
保护性嘛!联想还拥有“从 /proc 获得系统信息的专利”呢
如果想通过 node 实现呢?
NodeJS 中的客户端缓存、浏览器缓存、 304 缓存和 OnceIO 的缓存控制
http://cn.oncedoc.com/blog/view/iv3wnv5248br
node 只能给浏览器发一些暗示,但浏览器是否执行,和 node 一点儿关系也没有
和前端基本无关。不过后端可以做一些缓存,例如服务端渲染这样的工作,有兴趣的话可以看看我的博文, https://smallpath.me/post/spa-opti
html manifest 离线访问可以吗?
manifest 已经从标准中移除了,不建议
localStorage 一般有大小限制,最好<5MB
毕竟是 BS 结构,不要太纠结,在服务端做些提示就好了,看 6 楼
在Node.js中,实现静态资源的缓存通常涉及设置适当的HTTP头,以便浏览器能够缓存这些资源。这可以通过使用内置的http-server
模块或更强大的框架如Express
来完成。下面是如何在Express中实现静态资源缓存的示例:
首先,确保你安装了Express:
npm install express
然后,你可以使用以下代码来设置静态资源缓存:
const express = require('express');
const path = require('path');
const app = express();
// 设置静态文件夹
const staticFolder = path.join(__dirname, 'public');
app.use(express.static(staticFolder, {
maxAge: '1d', // 设置缓存时间为1天
setHeaders: (res, path, stat) => {
// 你可以根据文件类型设置不同的缓存策略
if (path.endsWith('.js')) {
res.setHeader('Cache-Control', 'public, max-age=86400'); // 1天
} else if (path.endsWith('.css')) {
res.setHeader('Cache-Control', 'public, max-age=604800'); // 1周
} else if (path.endsWith('.png') || path.endsWith('.jpg')) {
res.setHeader('Cache-Control', 'public, max-age=31536000'); // 1年
}
}
}));
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
在这个示例中,我们设置了一个静态文件夹public
,并通过maxAge
选项为所有静态资源设置了一个默认的缓存时间。此外,我们还使用了setHeaders
函数为不同类型的文件(如JavaScript、CSS和图片)设置了不同的缓存策略。这样,浏览器就可以根据这些HTTP头来缓存静态资源,从而提高加载速度和性能。