缓存静态页面和内容nodejs

Haz*_*ass 5 html javascript node.js

我有一个使用nodejs缓存的静态内容,据我所知有两种方法:

  1. 这可以使用 Node.js 来完成:

    app.use(express.static(path.join(__dirname, 'public'), { maxAge: oneDay }));

  2. 将包含静态内容的x.appcahe文件添加到缓存,然后在 html 标签中添加 Manifest 属性:

    <html manifest="x.appcache">

所以我的问题是这两种方式有什么区别?

Mat*_*tis 3

  1. 首先,node.js 服务器使用express.js 功能设置Cache-Control 标头
  2. 在第二个中,HTML 指定要由浏览器缓存的清单。

如果您搜索“缓存控制与 html 清单”,您会发现大量详细信息,这些详细信息超出了我在单个答案中可以编写的内容。然而,另一个标题为HTML 5 Cache Manifest Vs 的问题。Etags,Expires或cache-control标头有很好的总结和引用

HTML5 缓存清单与传统 HTTP 标头之间的主要区别:

  • 对于缓存清单,您需要浏览器的支持
  • 当然,对于 HTTP 标头,您还需要浏览器的支持,但它更通用
  • 您可以通过缓存清单更好地控制缓存
  • 您的网站或 Web 应用程序可以在没有任何连接的情况下正常离线工作
  • 您可以拥有每个资源的两个版本 - 用于离线和在线使用

最后一点非常方便,可以让您轻松交换网站中需要连接的部分,例如。包含可选注释的占位符,表明用户在没有连接或任何您想要的情况下无法获得完整功能。

还有一些兼容性问题,因为某些浏览器并不总是按照标准运行......所以这也值得研究和确定哪个(缓存控制与清单)最适合您的情况。