php redis静态页面缓存,php+redis实现全页缓存系统

php+redis实现全页缓存系统

推荐:《PHP视频教程》《redis教程》

php redis 实现全页缓存系统

之前的一个项目说的一个功能,需要在后台预先存入某个页面信息放到数据库,比如app的注册协议,用户协议,这种.然后在写成一个php页面,app在调用接口的时候访问这个页面.当时我就发现一个问题,这些协议往往几个月才会修改一次,而每一次用户查看这些协议的时候,nginx都会重新从数据库读取文件,速度会很慢慢了.

如下图m_about.php是我生成的数据页,

0c66085f10b0f15b95194396a1ec2d26.png

其次是几个借鉴cache系统的函数,remember函数,记忆缓存,这个是对外的最重要的接口,一般在缓存系统里面直接使用它就好./**

* 记录对应的缓存,如果之前存在则返回原本的缓存

* @param string $cacheName 缓存名

* @param string | callback $urlOrCallback 需要缓存的数据地址.可以是一个 网页地址也一个可回调类型,如果不是可回调类型,则判定是一个网址

* @param null | int $ttl 缓存过期时间,如果不过期就是用默认值null

* @throws \Exception 如果无法访问地址

* @return boolean|string 缓存成功返回获取到的页面地址

*/

public function remember($cacheName, $urlOrCallback, $ttl = null)

{

$value = $this->get($cacheName);//检查缓存是否存在

if (!$value) {

//之前没有使用键

if (is_callable($urlOrCallback)) {

$text = $urlOrCallback();

} else {

//如果不是回调类型,则尝试读取网址

$text = $this->getUrlText($urlOrCallback);

}

if (empty($text)) {

throw new \Exception('can not get value:' . $urlOrCallback);

}

$this->put($cacheName, $text, $ttl);

return $text;

} else {

return $value;

}

}

refresh函数,刷新缓存函数,如果缓存页面被更新了,就去刷新它./**

* 更新缓存,并返回当前的缓存

* @param string $cacheName 缓存名

* @param string | callback $urlOrCallback 需要缓存的数据地址.可以是一个 网页地址也一个可回调类型,如果不是可回调类型,则判定是一个网址

* @param null | int $ttl 过期时间,如果不过期就是用默认值null

* @return boolean|string 缓存成功返回获取到的页面地址

*/

public function refresh($cacheName, $urlOrCallback, $ttl = null)

{

$this->delete($cacheName);

return $this->remember($cacheName, $urlOrCallback, $ttl);

}

剩下的两个代码文件.一个是redisFPC.php,这是全页缓存的demo,一个是测试用的文件

fpcTest.php

这里是用的是github,连接到我本人的git博客上面.如果连接github有问题,可以看本文最后给的完整代码.

测试

我们在这里测试,第一次加载因为需要读取对应的m_ahout的信息,所以慢一点

48bbf3e3dfe96c75629fe855eeeb9cb5.png

测试用的test代码

注意这里的url写的是本地的缓存url<?php

use RedisFPC\RedisFPC;

require_once 'redisFPC.php';

/* $text = file_get_contents('http://localhost:1002/m_about.php');

var_dump($text); */

$url = 'http://localhost:1002/m_about.php';

$fpc = new RedisFPC();

echo $fpc->remember('服务协议', $url, 60*60*24);

php+redis实现全页缓存系统的教程已介绍完毕,更多请关注跳墙网其他文章教程!

php+redis实现全页缓存系统相关教程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值