TP5.0的“请求缓存”,把页面缓存为静态HTML文件,提升加载速度

TP5.0的"请求缓存"不仅仅是告诉浏览器缓存页面,它其实做了两件事

它既在服务器本地缓存了页面数据
又指挥浏览器进行缓存。

我们可以把它理解为一个"双重缓存"机制。

为了让你更好地理解,我们来看一个实际例子。假设你有一个博客文章详情页 http://tp5.com/blog/1。

1、第一次访问(缓存建立):

用户请求到达服务器,TP5发现没有这个请求的缓存。

框架正常执行PHP代码,从数据库查询ID为1的文章。

TP5将生成的最终HTML页面保存到服务器的本地缓存中(比如runtime/cache/目录下),同时在HTTP响应头中设置了缓存指令(如Cache-Control和Last-Modified),告诉浏览器:"这个页面你可以缓存起来,有效期是10分钟。"

最终,浏览器收到完整的页面(状态码200),并将其缓存到本地。

2、10分钟内第二次访问(缓存生效):

浏览器带着本地缓存的标识(If-Modified-Since头)再次请求同一个地址。

TP5的请求缓存机制首先被触发。它会检查:

服务器本地缓存:发现已经存有blog/1这个页面的完整内容。

浏览器缓存:通过分析请求头,发现浏览器自己也有这个页面的缓存,并且还没有过期(10分钟内)。

于是,TP5什么PHP代码都不执行,直接向浏览器返回一个304 Not Modified状态码。这个状态码就像在告诉浏览器:"你本地存的页面还是最新的,直接用吧!"

浏览器收到304后,立刻从自己的本地缓存里加载页面。整个过程几乎没有网络传输,速度极快。

新的浏览器请求的时候,服务器就直接返回静态HTML文件了,速度也很快

tp5.0 配置缓存 admin 模块下的 admin/login/index 这个页面

application ->route.php 在这个application 文件夹下的route.php的配置文件里,添加如下代码

分组的方式

php 复制代码
Route::group('admin', function() {
    //登陆页缓存 3600 秒  60*60*100 =360000  100小时=4.1天
    Route::get('login/index', 'admin/login/index',['cache' => 0]); //  ,['cache' => 360000]     0 表示永久缓存
});

或者直接不分组

php 复制代码
Route::get('webpc/login/index', 'webpc/login/index',['cache' => 0]); //  ,['cache' => 360000]    0 表示永久缓存

'cache' =\> 0 是永久缓存

'cache' =\> 3600 是缓存3600秒

免费在线工具网站 https://mantools.top

相关推荐
benbenAItalk6 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
2601_962885726 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
西瓜太郎12347 小时前
Claude Code、Codex CLI、Gemini CLI 能否共用一枚 Key?先看协议选择矩阵
前端·api 网关·claude code·gemini cli·codex cli
陈随易9 小时前
在Finch用了62亿词元,我认为这是新一代Agent工具之神
前端·人工智能·后端
水域安全老周9 小时前
水趣钓鱼救生衣专利拆解:两级锁紧如何解决落水人衣分离
java·前端·网络
疯狂打码的少年10 小时前
【计算机网络】子网掩码与子网划分计算(含CIDR表示法)
服务器·笔记·计算机网络·php
计算机魔术师10 小时前
Anthropic CEO突然喊踩刹车,OpenAI罕见力挺:AI这辆车不能只踩油门了
前端
wing9810 小时前
从codex转战workbuddy使用一周的感受
前端·人工智能·后端
EatFan10 小时前
Java接入支付宝 JSAPI 支付保姆教程(二):流程讲解与前后端代码讲解
前端·spring boot·后端·微信小程序·小程序·uni-app
梦想平凡11 小时前
百游棋牌源代码开发搭建教程(五):房间创建、座位分配与请求幂等实现
前端·javascript·数据库·源代码管理