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

CMS技巧
dede(织梦)CMS常见问题及解决方法
织梦内容管理系统(dede)模板标签代码参考
网站内容管理系统CMS在国内都有哪些?
建站选择CMS一定要谨慎
适合搜索优化(SEO)的几个CMS介绍
从SEO视角判断CMS系统的好坏
简单把Wordpress打造成CMS
帝国ecms教程:一些常用的技巧大全
帝国ecms:实现google的全站sitemap制作教程
dedecms发布分页问题完全解决方案
使用织梦网站管理(DEDECMS)架设网站全面分析
百度、谷歌搜索引擎原理及新网站应对
织梦网站管理系统(DedeCms2007)将于11月底发布
关于blog系统中最合适做优化的程序
给zblog加上运行代码功能
修改z-blog分页页码样式
给z-blog博客添加链接点击统计
LBS增加引用地址和永久地址点击复制功能
LBS功能:图片的自适应实现代码
ZBLOG增加文章里的关键字替换

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-03   浏览: 33 ::
收藏到网摘: 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,分享一下自己的优化技巧,如有更多更好的方法以及深入探讨以评论的方式交流吧。