当前位置: 首页 > 图文教程 > 网页制作 > CMS技巧 > WordPress优化(2):cacheAsFile静态网页

CMS技巧
SupeV影音播客系统前台功能介绍
SupeV影音播客系统SupeV产品特点
SupeV影音播客系统后台功能
SupeV影音播客系统搭建视频站步骤
SupeV影音播客系统的其它特色功能
织梦网站内容管理系统(DedeCms)用户手册
DedeCms模板制作轻松学
Discuz论坛介绍及相关软件下载
在CMS中用Meta来标注版权信息
Dvbbs V8.2.0 RC1模板驱动机制
动易、新云和风讯后台模块的比较
轻松安装MM喜欢的Discuz!论坛表情包
博客程序Wordpress常用插件逐个介绍
KingCMS5.0从安装到设置使用教程
WordPress设置自己喜欢的标签云
制作WordPress的标签云页面的实例
优化Wordpress的速度的几个技巧
丢失wordpress登录密码后的解决方法
初用WordPress自动转换中文标点问题
WordPress插件:中文标题自动转换拼音

CMS技巧 中的 WordPress优化(2):cacheAsFile静态网页


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-03   浏览: 34 ::
收藏到网摘: n/a

Cache Function As File(缓存函数结果到文件)这句话是学的Flash AS程序中的cacheAsBitmap ,在Wordpress中主要是缓存一个函数的返回结果到一个文件,供下次使用。然而有这个必要吗?

我使用到的站点地图插件Dagon Design Sitemap Generator,每次访问都会查询整个数据库,然后根据一定算法做字符串拼接处理,这样来生成出看到的成站点地图的html代码,但随着文章的增多,现在仅站点地图生成的html字节大小已达120K。

同样,通常在主题上存在的档列表,标签云,分类列表,友情链接这样的列表,而这些类容通常更新频率并不高,而默认情况下是每次访问都需要查询数据库再进行字符串拼接来动态生成。数据库、服务器每次都需要进行重复的运算。这样网页打开的速度慢了,服务器的负荷也上去了,性能的瓶颈产生了。

如果将这些列表函数生成的html内容缓存到文件,下次使用只需要读取输出即可,而不需要进行数据的查询和字符串拼接。web server只管输出内容即可,这样很大程度上减低的服务器负担。

这样一台服务器上就可以放更多的网站,可以承受更高的突发访问量。还可以xxx,还可以xxx,哈哈,已说得天花乱坠… 不过话说回来,其实就是静态话的好处。
首先将cacheAsFile函数声明到wp-config.php中的代码部分。函数代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function cacheAsFile($function,$cache_file,$args_array = array(),$cache_time = 86400){	$filename = ABSPATH.'wp-cache/'.$cache_file;
 	if(file_exists($filename) && time() < filemtime($filename) + $cache_time ){
 	$handle = fopen($filename, "r");	$contents = fread($handle, filesize ($filename));	fclose($handle);	return $contents;
 	}else{
 	$contents = call_user_func_array($function,$args_array);
 	if($contents){	if (!$handle = fopen($filename, 'w')) { echo "不能打开文件 $filename"; exit();	}	if (!fwrite($handle, $contents)) {	echo "不能写入到文件 $filename";	exit();	}	fclose($handle);	}	return $contents;	}
}

使用参数说明

  • $function 需要cache住的功能函数,必须是带返回值的函数
  • $cache_file 缓存文件名
  • $args_array 参数集,以数组形式封装传递给指定的功能函数。可选参数
  • $cache_time 缓存时间,单位是秒,默认是一天过期。可选参数

创建wp-cache文件存放目录

如果你的网站根目录下没有wp-cache目录,请手动创建,同时linux下请确保好读写权限。

找到需要cache到文件的函数,需要是有返回值的底层函数,而不是带了echo输出的。同样以Dagon Design Sitemap Generator为列,找到插件文件sitemap-generator.php,在其代码中找到 str_replace(’<!– ddsitemapgen –>’ 所在行。我的是在1266行。ddsg_create_sitemap为带返回值的函数。这个就是核心功能代码。他的返回值会替换内容中的<!– ddsitemapgen –>

这里可需要一些代码知识哦。有点门槛。

开始使用cacheAsFile函数

使用在Dagon Design Sitemap Generator
 

使用在 simple Tags 的标签云
 

使用在需要附加参数的功能函数中
 
检查wp-cache下生成的cache文件
如果不出意外cache开始生效了,在这个目录下应该能够看到相应的缓存文件。可以清理掉相应缓存文件来达到更新的目的。

后续

这个方法也不只是仅仅适用于Wordpress、php,将基本思想移植到其他的环境下一样的会有好的效果。

OK,分享一下自己的优化技巧,如有更多更好的方法以及深入探讨以评论的方式交流吧。