让WordPress使用Redis缓存来进行加速
发布时间:2022-06-22 11:23:05 所属栏目:教程 来源:互联网
导读:Redis是一个高级的keyvalue存储系统,类似memcached,所有内容都存在内存中,因此每秒钟可以超过10万次GET操作。 我下面提出的解决方案是在Redis中缓存所有输出的HTML内容而无需再让WordPress重复执行页面脚本。这里使用Redis代替Varnish设置简单,而且可
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=newPredisClient''; 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. (编辑:舟山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐