• feixiang
    文件缓存
    ID file_cache版本 1.2.6插件制作者 feixiang免费742 行 / 36.3 KBHook / 后台页
    为未登录访客的页面提速:相同页面直接读取已保存的副本,减少重复处理,网页打开更快、服务器压力更小。
    app/plugins/file_cache/plugin.php
    开发日志已有 3 条

    个人独立维护项目。

    • bbs1org
      bbs1org
      版本 1.2.6 c9dd51e1a177 更新:serve() 只读首行,304 不碰正文、去掉 max_files,一切为了性能release
    • bbs1org
      bbs1org
      版本 1.2.4 a2e699dd60c3 更新:发帖、回帖、编辑都不会清空缓存,页面按各自的缓存时间自然过期,游客最多会看到稍旧的内容;帖子被删除时,帖子页会在下次访问时自动作废。需要立刻生效时用下方「缓存维护」手动清空。 按哈希前 2 位分 256 个子目录存放
    • feixiang
      feixiang
      版本 1.2.2 a9c93d130209 更新:# 文件缓存 · 更新日志 | 项目 | 内容 | | --- | --- | | 插件 ID | `file_cache` | | 插件名称 | 文件缓存 | | 当前版本 | 1.2.2 | | 插件简介 | 为未登录访客的页面提速:相同页面直接读取已保存的副本,减少重复处理,网页打开更快、服务器压力更小。 | | 作者 | feixiang | 新版本发布时在文首追加一条,最新版本始终在最上
    主楼
  • 质量报告

    插件质量报告

    插件:file_cache

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    app.boot全站请求启动否5----
    admin.tabs后台管理页标签栏(展示位置:后台Tab)否1----

    颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。

    数据字典

    未检测到插件数据表声明。

    #1
  • feixiang

    版本 1.2.2 更新:

    文件缓存 · 更新日志

    项目内容
    插件 IDfile_cache
    插件名称文件缓存
    当前版本1.2.2
    插件简介为未登录访客的页面提速:相同页面直接读取已保存的副本,减少重复处理,网页打开更快、服务器压力更小。
    作者feixiang

    新版本发布时在文首追加一条,最新版本始终在最上面。

    版本日期变更摘要
    1.2.22026-09-11修复控制台调试输出里的地址被反向代理写入主机名和重复斜杠

    1.2.2(2026-09-11)

    修复:控制台调试输出里的地址不再被反向代理写乱

    更新前

    开启「控制台调试输出」后,浏览器控制台里的地址会多出主机名和重复斜杠:

    HIT · 37.08 ms · 6.9 KB · /www.example.com//index.php?a=topic&id=1 · 生成于 2026-09-11 10:20:33 · TTL 600s

    原因

    站点前面有反向代理或伪静态时,服务器收到的 REQUEST_URI 本身就是「主机名 + 真实路径」:

    REQUEST_URI = /www.example.com//index.php?a=topic&id=1

    插件只是如实打印这个地址,并非拼接错误。同一份插件部署在没有代理的环境里,显示的地址一直是对的。

    修复方式

    打印前先规范化地址:只保留问号之前的路径部分,用入口脚本名定位真实路径并截断,兜底去掉开头形如域名的一段,再折叠重复斜杠;查询串原样保留,不删改访客参数。

    更新后

    服务器收到的地址控制台显示
    /www.example.com//index.php?a=topic&id=1/index.php?a=topic&id=1
    /index.php?a=topic&id=1/index.php?a=topic&id=1(无代理环境输出不变)
    /www.example.com//topic/1/topic/1(伪静态地址)
    /www.example.com//

    补充说明:

    • 日志中地址前后的 · 是状态分隔符,不是斜杠。
    • 地址来自访客请求,只做去噪、不做改写:地址栏里确实带的参数会照实显示,便于逐条核对。
    • 缓存状态、耗时、页面体积、生成时间和 TTL 的输出格式均未改变。

    升级方法

    1. 用新文件覆盖 app/plugins/file_cache/plugin.php。
    2. 进入后台「插件」页,对该插件执行一次「同步」。
    3. 无需清空缓存,无需重新保存设置。

    兼容性

    • 配置项、缓存键、缓存文件格式均未变化,升级前后生成的缓存文件可以继续使用。
    • 控制台日志是响应末尾临时附加的,不写入缓存文件;已有缓存被命中时同样显示新格式。
    • 未修改核心文件,未影响其他插件。
    • 仅调整日志文本的显示方式,缓存命中、回源与失效逻辑不变。

    验证结果

    • php -l 语法检查通过。
    • 文件为 UTF-8 无 BOM、LF 换行、无尾随空白,共 680 行。
    • 按真实请求回归,下列形态全部符合上表:/主机名//index.php?a=topic&id=1、/index.php?a=topic&id=1、/主机名//topic/1、/主机名/、//index.php。

    发布页更新日志(精简版,可直接粘贴)

    1.2.2:修复开启「控制台调试输出」后,日志里的地址会带上服务器主机名和重复斜杠的问题,现在显示为与地址栏一致的地址(如 /index.php?a=topic&id=1)。无需清空缓存。
    #2
  • feixiang

    当 OPcache 未开启,且没办法开启,
    可以使用本文件缓存插件,输出可以在浏览器控制台查看缓存状态。

    预览图.png

    最后由 feixiang 编辑于 2026-09-11 15:44
    #3
  • dasheyang

    这个不错

    #4
  • webmaster

    和OPcache 一起开,有增益吗?

    #5
  • feixiang

    不知道呢,理论上缓存开1个就行了,多开也没什么意义,我是free.fr的免费空间,它默认没开OPcache,也开不了,所以才开发这个插件,让它访问更快一点,开启后runtime_info这个插件显示的就不准确了,勾选调试输出本来想在下面接着显示缓存信息,想着页面美观,需要在F12查看缓存状态。

    #6
  • bbs1org

    不错。直接生成html文件,更省资源

    #7
  • bbs1org

    经官方验证,效果很明显。值得安装启用。

    #8
  • bbs1org

    paste-20260911-180922.png

    #9
  • bbs1org

    版本 1.2.4 更新:
    发帖、回帖、编辑都不会清空缓存,页面按各自的缓存时间自然过期,游客最多会看到稍旧的内容;帖子被删除时,帖子页会在下次访问时自动作废。需要立刻生效时用下方「缓存维护」手动清空。
    按哈希前 2 位分 256 个子目录存放

    #10
  • bbs1org

    版本 1.2.6 更新:
    serve() 只读首行,304 不碰正文、去掉 max_files,一切为了性能

    #11

发表回复

登录后回复