自留地
切勿乱来!
     找回密码

修复PHPCMS V9动态缓存函数 为动态页面提供静态缓存

#PHPCMS专题

在我使用WordPress的时候,因为WordPress都是动态的,打开速度感人!为了优化速度,WordPress提供了为动态页面生成静态化的插件WP Super Cache插件,中文名叫超级缓存!
实际上,我们PHPCMS V9也有这样的功能,只是有BUG,使用不了,所以进行了修复,方法如下:

/phpcms/libs/functions/global.func.php文件里找到如下两个函数:
cache_page_start
cache_page

两个函数整体更换为:

/**
 * 读取缓存动态页面
 */
function cache_page_start() {
	$relate_url = isset($_SERVER['REQUEST_URI']) ? safe_replace($_SERVER['REQUEST_URI']) : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.safe_replace($_SERVER['QUERY_STRING']) : $path_info);
	define('CACHE_PAGE_ID', md5($relate_url));
	$contents = getcache(CACHE_PAGE_ID, 'page_tmp');
	if($contents && intval(substr($contents, 15, 10)) > SYS_TIME) {
		echo substr($contents, 29);
		exit;
	}
	if (!defined('HTML')) define('HTML',true);
	return true;
}
/**
 * 写入缓存动态页面
 */
function cache_page($ttl = 360, $isjs = 0) {
	if($ttl == 0 || !defined('CACHE_PAGE_ID')) return false;
	$contents = ob_get_contents();
	if($isjs) $contents = format_js($contents);
	$contents = "<!--expiretime:".(SYS_TIME + $ttl)."-->\n".$contents;
	setcache(CACHE_PAGE_ID, $contents, 'page_tmp');
}

这样就修复了动态页面缓存功能!使用方法如下:

cache_page_start();

模板引用函数

cache_page(120);

120为缓存有效期,单位为秒

比如在内容控制器/phpcms/modules/content/index.php里的show方法里找到

include template('content',$template);

在其上面增加:

cache_page_start();

下面增加:

cache_page(120);

首次访问内容的动态地址,就会生成缓存文件,存放在/caches/caches_page_tmp文件夹里,再次访问,就先读取缓存了

11 收藏 打赏
×
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《修复PHPCMS V9动态缓存函数 为动态页面提供静态缓存》
文章链接:https://www.ediok.cn/blog/2021/12/5469.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

评论 4

评论前必须登录!

 

  1. #1
    用户头像

    不好玩,不能取消点赞

    神经蛙 上海市4年前 (2021-12-20)

关注互联网发展前沿,关注PHPCMS技术演进,钻研PHPCMS技术开发

问答社区 联系我们

登录

登录即表示同意本站用户协议隐私政策
©2026 周涛博客 All rights reserved

注册

注册即表示同意本站用户协议隐私政策
©2026 周涛博客 All rights reserved

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

微信扫一扫

微信扫一扫