ThinkPHP5源码学习篇--请求缓存

数据结构很有意思

最近看《PHP核心技术与最佳实践》一书时,有提到PHP的数组实现是依赖于哈希表,包含哈希碰撞、哈希函数、拉链表等等,觉得很有意思,于是重拾大学时期简单学过的数据结构,结果在看Mysql资料时,也涉及到数据结构方面知识,感觉打开了一扇新大门。


请求缓存学习

学习了TP5的请求缓存内容,特此来总结一下。

在App::run()方法内,存在如下代码

$request->cache(
    $config['request_cache'],
    $config['request_cache_expire'],
    $config['request_cache_except']
);

先来看看config配置对应三个参数是什么意思
// 是否开启请求缓存 true自动缓存 支持设置请求缓存规则
’request_cache’ => false,
// 请求缓存有效期
’request_cache_expire’ => 3600,
// 全局请求缓存排除规则
’request_cache_except’ => [],
从注释文字来理解,
request_cache用来控制请求缓存是否启动
request_cache_expire表示缓存支持的时间
request_cache_except作类似白名单作用,若想要排除指定请求不使用缓存,可预先设置


请求缓存是什么呢?

了解一下http的304状态(Not Modified),借用《图解HTTP》的描述是:
该状态码表示客户端发生附带条件的请求时,服务器端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304Not Modified(服务器端资源未改变,可直接使用客户端未过期的缓存)。304状态吗返回时,不包含任何响应的主体部分。
附带条件是指采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部。

先举一个例子:
访问html类型文件,
第一次访问状态码:Status Code: 200 OK
第二次访问状态吗:Status Code: 304 Not Modified
我对这部分原理还是似懂非懂的感觉,所以就不说明避免误导了。主要是想通过访问html文件来说明,返回304状态码的前提必须得有一次200初次通信,那么在后续判断了文件未过期,且内容未修改后,服务器端直接返回304状态码,不需要再传输content,减少了通信数据量,页面加载缓存下来的数据来提高的体验。

上面说了html静态页面缓存的好处,再回到thinkphp5,就有疑惑的地方了,一般PHP作为动态请求,能使用缓存吗?就当能使

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值