EMLOG

cover

静态缓存Pro(提高加载速度) 功能扩展

将首页、列表页、文章/页面详情页缓存为静态 HTML,大幅降低服务器负载,显著提升页面加载速度。支持异步浏览量更新、全站预缓存、智能精准缓存清除。


购买 / 收藏:请先登录


开发者:虾哥工作室

无代码加密 无额外授权 版本号:1.4 适配PHP:7.4+

使用说明

功能介绍

为什么做这个呢,因为我当时想要提高下网页加载速度,这样给cdn也快。

静态缓存 Pro 将首页、分类列表页、标签列表页、作者列表页、归档列表页及文章/页面详情页渲染结果缓存为静态 HTML 文件,后续请求直接返回静态文件,跳过 PHP 执行与数据库查询,大幅提升响应速度。

核心特性

1. 智能缓存

  • 自动缓存首页、分类/标签/作者/归档列表页、文章与页面详情页
  • 智能排除:已登录用户、后台请求、POST 请求、密码保护文章、跳转链接文章、隐藏/未审核内容、定时发布文章等均不缓存
  • 缓存内容过短(< 100 字节)自动跳过,避免缓存错误页面

2. 灵活的缓存有效期

  • 支持设置缓存 TTL(0 ~ 2,592,000 秒)

3. Stale-While-Revalidate 机制

  • 缓存过期时,若另一个进程正在重建缓存,当前请求仍然返回旧缓存
  • 有效防止缓存雪崩/惊群效应

4. 精准缓存清除

  • 文章更新/删除时,自动清除该文章详情页、首页、所属分类列表、所属标签列表、作者列表的相关缓存

5. 异步浏览量更新

  • 缓存页面通过 JavaScript 异步获取并更新浏览量
  • 文章详情页自动 +1 浏览(60 秒内同一会话同一文章仅计一次)

6. 全站预缓存

  • 后台一键触发全站预缓存,自动遍历并缓存所有可缓存页面

使用方法

  1. 安装并启用插件
  2. 进入插件设置页面,开启缓存开关
  3. 根据需要调整缓存有效期
  4. 点击「全站预缓存」按钮,主动生成全站静态缓存
  5. 后续内容发布、编辑、评论等操作将自动触发相关缓存更新

缓存存储

  • 缓存文件位于 content/cache/static/ 目录
  • 每个缓存文件以 URL 路径的 MD5 哈希命名
  • 设置页面可查看当前缓存文件数量与总大小
  • 支持一键清除全部缓存

注意事项

  • 确保服务器 content/cache/static/ 目录可写
  • 需要 PHP curl 扩展支持全站预缓存功能
  • 已登录用户始终获取动态页面,不受缓存影响
  • 修改插件设置后会自动清除全部缓存以保证一致性
请先登录, 再发布评论

JOSEN

铁杆 4小时前

接着之前的问题,0B的.lock文件问题已经解决,但是在后台点 “全站缓存”后 在 /content/cache/static 目录并没有HTML文件生成,后来我用 宝塔AI 进行了分析,得出的结论是:”View::output() 函数直接调用 exit,没有触发 before_exit 钩子,导致 static_cache_pro 插件的缓存保存函数无法执行“ 进行修复后正常了。

JOSEN 铁杆 4小时前

修复文件:wwwroot/ai_josen_net/include/lib/view.php
修复内容:在 ob_end_flush(); 和 exit; 之间添加 doAction('before_exit', $content);
现在已经正常了。

JOSEN 铁杆 4小时前

public static function output()
{
$content = ob_get_clean();
ob_start();
echo $content;
ob_end_flush();
// 触发 before_exit 钩子,允许插件(如静态缓存)在脚本结束前执行操作

JOSEN 铁杆 4小时前

doAction('before_exit', $content);
exit;
}

虾哥工作室 铁杆 开发者 3小时前

好的,谢谢,我修复下


JOSEN

铁杆 21小时前

我安装后 在 /content/cache/static 目录生成的都是0B的.lock文件,是怎么回事?如下图:

虾哥工作室 铁杆 开发者 20小时前

我复现了下,应该是被爬虫/扫描器大量探测这类无效 URL,每个请求留下一个 0B .lock,等我更新下版本

JOSEN 铁杆 20小时前

我有服务器配置如下:PHP:8.1.32, 300s,50M,curl,zip,gd,mbstr
数据库:MySQL 5.6.50-log (MySQLi )
Web服务:nginx/1.21.4
操作系统:Linux x86_64
----------------------------------
我点 “全站预缓存” 后就生成了大量的.lock文件,没有一个html文件生成。

虾哥工作室 铁杆 开发者 14小时前

你好,已更新1.4版本,针对宝塔环境适配了下。
1. 更新插件文件后,先到插件设置页点 "清空所有缓存" 清掉残留的 .lock;
2. 重新点"全站预缓存",面板里的失败日志会显示每个失败 URL 的 HTTP 状态码和 curl错误码——如果仍有失败,把失败日志发出来即可进一步定位(比如某些 URL 本身 404 ,HTTPS 重定向问题)。


  • 1.4
    14小时前

    修复宝塔环境的使用问题

  • 1.2
    2个月前

    1.2