让WordPress使用Redis缓存来进行加速
发布:smiling 来源: PHP粉丝网 添加日期:2018-12-04 09:33:07 浏览: 评论:0
Redis是一个高级的keyvalue存储系统,类似memcached,所有内容都存在内存中,因此每秒钟可以超过10万次GET操作。
我下面提出的解决方案是在Redis中缓存所有输出的HTML内容而无需再让WordPress重复执行页面脚本。这里使用Redis代替Varnish设置简单,而且可能更快。
安装Redis
如果你使用的是Debian或者衍生的操作系统可使用如下命令安装Redis
aptgetinstallredisserver
或者阅读安装指南
使用Predis作为Redis的PHP客户端
你需要一个客户端开发包以便PHP可以连接到Redis服务上。
这里我们推荐Predis.上传predis到WordPress的根目录。
前端缓存的PHP脚本
步骤1 在WordPress的根目录创建新文件withredis,内容如下
- Changethesetwovariables:
- $seconds_of_caching=60 60 24 7;7days.
- $ip_of_this_website='204.62.14.112';
- ThisfileiswrittenbyJimWestergren,copyrightallrightsreserved.
- Seemorehere:jimwestergrenwordpresswithredisasafrontendcache
- Thecodeisfreeforeveryonetousehowtheywantbutpleasementionmynameandlinktomyarticlewhenwritingaboutthis.
- Change$ip_of_this_websitetotheIPofyourwebsiteabove.
- Add?refresh=yestotheendofaURLtorefreshit'scache
- Youcanalsoentertheredisclientviathecommandpromptwiththecommand"rediscli"andthenremoveallcachewiththecommand"flushdb".
- VerynecessaryifyouuseCloudfare:
- ifisset$_SERVER['HTTP_CF_CONNECTING_IP']{
- $_SERVER['REMOTE_ADDR']=$_SERVER['HTTP_CF_CONNECTING_IP'];
- }
- ThisisfromWordPress:
- define'WP_USE_THEMES',true;
- Startthetimer:
- functiongetmicrotime$t{
- list$usec,$sec=explode"",$t;
- returnfloat$usec+float$sec;
- }
- $start=microtime;
- InitiateredisandthePHPclientforredis:
- include"predis";
- $redis=newPredis\Client'';
- fewvariables:
- $current_page_url="".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
- $current_page_url=str_replace'?refresh=yes','',$current_page_url;
- $redis_key=md5$current_page_url;
- Thisfirstcaseiseithermanualrefreshcachebyadding?refresh=yesaftertheURLorsomebodypostingacomment
- ifisset$_GET['refresh']||substr$_SERVER['REQUEST_URI'],12=='?refresh=yes'||$_SERVER['HTTP_REFERER']==$current_page_url$_SERVER['REQUEST_URI']!=''$_SERVER['REMOTE_ADDR']!=$ip_of_this_website{
- require'.wpblogheader';
- $redisdel$redis_key;
- Secondcase:cacheexistinredis,let'sdisplayit
- }elseif$redisexists$redis_key{
- $html_of_current_page=$redisget$redis_key;
- echo$html_of_current_page;
- echo"!Thisiscache
- third:anormalvisitorwithoutcache.Anddonotcacheapreviewpagefromthewpadmin:
- }elseif$_SERVER['REMOTE_ADDR']!=$ip_of_this_websitestrstr$current_page_url,'preview=true'==false{
- require'.wpblogheader';
- $html_of_current_page=file_get_contents$current_page_url;
- $redissetex$redis_key,$seconds_of_caching,$html_of_current_page;
- echo"!Cachehasbeenset
- lastcase:thenormalWordPress.Shouldonlybecalledwithfile_get_contents:
- }else{
- require'.wpblogheader';
- }
- Let'sdisplaysomepagegenerationtimenote:CloudFlaremaystripo utcomments:
- $end=microtime;
- $t2=getmicrotime$endgetmicrotime$start;
- if$_SERVER['REMOTE_ADDR']!=$ip_of_this_website{
- //phpfensi.com
- echo"!CachesystembyJimWestergren.Pagegeneratedin".round$t2,5."seconds.
- }
或者直接下载withredis
步骤2 将上述代码中的IP替换成你的IP
步骤3 在.htaccess中将所有出现的地方改为withredis,如果你使用的是Nginx则修改nginx.conf中的为withredis并重载Nginx killallsHUPnginx。
性能测试
1.没有Redis的情况下,平均执行1.614秒,页0.174秒无任何缓存插件
2.使用Redis的情况下,平均页面执行时间0.00256秒
我已经在我的博客中使用了如上的方法进行加速很长时间了,一切运行良好。
其他建议
我的环境是Nginx+PHPFPM+APC+Cloudflare+Redis.安装在一个nanoVPS中,无缓存插件。
请确认使用了gzip压缩,可加快访问速度。
访问wpadmin
要访问wpadmin必须使用wpadmin代替原来的wpadmin.
Tags: WordPress加速 Redis缓存
相关文章
- ·怎样给WordPress加速(2014-05-24)
- ·完美优化wordpress网站10步加速优化曲(2015-02-27)
- ·wordpress超级加速,把缓存放到内存中(2015-02-28)
- ·使用redis让您的wordpress博客加速五倍(2015-03-23)
- ·WordPress 非插件实现静态资源CDN加速 及 又拍云、七牛CDN配置(2015-05-07)
- ·WordPress给网站配置Redis 缓存的例子(2014-06-21)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)