使用页面缓存插件优化 Halo 网站速度

8 阅读

页面静态缓存是面向 Halo 2 的插件,在服务端对已渲染的页面做静态缓存,减少重复计算与数据库访问,从而缩短未登录访客打开前台页面的时间。

它适合以文章、页面展示为主、访客大多未登录的博客或官网;与 CDN、图片压缩等手段可以叠加使用。若你还需要从整体上排查慢加载,可参考 网站加载速度慢,是什么问题导致的?

效果对比

nmQKJKGneZKYfGICFnOKkOWnnbXBXzCr.jpg

启用前

MHfGMiMPPVEJFRrqEPECWzASdRtlzclc.jpg

启用后

安装与启用

  1. 在控制台打开应用市场,搜索 页面静态缓存,或打开应用详情页:页面静态缓存

  2. 安装后启用插件即可,无需额外配置也会按默认策略开始工作。

默认缓存策略

在默认设置下,行为如下:

  1. 仅未登录访客访问前台页面时会生成缓存,已登录用户访问时不会写入缓存,也不会命中已有缓存。

  2. 插件会监听文章内容变更并自动刷新相关缓存,如果站点上其他类型内容更新后需要立刻对所有访客生效,需要你在变更后手动清理缓存(见下文)。

「总是缓存」选项说明

在插件设置中可以开启 总是缓存。开启后:

  • 已登录与未登录用户访问时都会使用已有缓存;

  • 但只有未登录访问时才会创建或更新缓存。

因此,若主题在页面 HTML 里直接渲染了「当前登录用户的昵称、头像」等数据,不建议开启该选项,否则用户登录后可能仍看到旧页面。

若业务上必须开启,建议把与用户相关的展示改为前端通过 API 异步加载,保证首屏 HTML 可被安全缓存。

手动清理缓存

当站点做了非文章类的更新、或需要立刻让全体访客看到最新前台效果时,可以手动刷新缓存:

在控制台 仪表盘快捷访问中,添加 刷新页面缓存 入口。

YCVNIxReWYGGwgYTucMOQwThZlqKjZZO.png

需要时点击 刷新页面缓存,即可清空当前页面缓存,后续访问会重新生成。

qhoHDxSuaJQZqcPuFiIOuvNVQOChZtQB.png

使用上的注意点

  • 页面缓存减轻的是应用层渲染与读库压力,不能替代带宽、CDN、图片体积等优化。

  • 默认策略下,已登录用户始终走实时渲染,适合需要区分访客与管理员体验的场景。

  • 若站点强依赖实时数据,应评估是否启用、以及是否配合「总是缓存」与异步数据加载。

配合 CDN 使用

此插件也可以配合 CDN 使用,利用 CDN 的节点缓存,可以让访客访问就近的节点,以获得更快的访问速度。与 CDN 配合使用通常无需额外配置,默认情况下,此插件会为已缓存的页面添加 max-age=3, s-maxage=120, must-revalidate 的响应头,CDN 会自动缓存这些页面,但需要注意的是:

  1. 一定要在 CDN 中配置缓存策略为 遵循源站

  2. 在 Halo 侧清理缓存不会及时清理掉 CDN 的节点缓存,如果需要及时清理,需要在 CDN 侧手动清理。

有关 Halo 配置 CDN 的教程可参考:


评论