WordPress缓存提速优化进阶学习目标0sql查询

tengxunyun cera

这是今年第二篇关于WordPress提速性能优化的文章了,第一篇WordPress性能优化——提升网站速度飞起来教程在当时看来能将WordPress网站从5秒左右提速到1秒已是极限,我还沾沾自喜,如今看来那只能算是初级教程,今天给大家带来高级教程,别问我为什么不按初级中级高级的顺序写,因为我的博客想怎样写就怎样写!

大家以为WordPress的速度极限是多少秒?我见过最快的WordPress网站就是我爱水煮鱼的博客,号称0.0006秒生成页面,虽然生成速度很快,但在用户体验上的实际访问速度(这里指输入网址到浏览器展示出来的时间,即DOM解析速度)还是在300ms左右(实测与访客网络有关,在下渣渣移动3G网络)。当然,在第一次访问之后打开其它页面的速度几乎可以说是无缝切换。

WordPress缓存提速优化进阶学习实现0sql查询

目前代码狗博客的访问速度可以在500ms左右展现为了提升WordPress访问速度,站内页面间的切换可以说几乎做到了无缝切换,但相比于优化大神我爱水煮鱼来说还有许多不足之处,等我再研究一阵应该可以写出一篇终极优化教程来,这次WordPress性能提速优化我做了如下更改。

服务器方面
Centos7.2 64位系统升级至Centos7.4 64位系统。
Nginx1.11升级至Nginx1.12。
PHP5.6升级至PHP7.2。
MySQL5.4升级至MySQL5.6。
Memcached1.3升级至Memcached3.0。
新增PHPOpcode字节码缓存。
新增Redis缓存。
WordPress缓存插件
Batcache缓存插件,它能将整个页面静态化,右键查看网页源码可以在网页底部看到绿色的缓存信息。下载好后取出其中advanced-cache.php文件放入wp-content/目录下,注意wp-content目录下,batcache.php文件放入wp-content/plugins/目录下,然后后台开启插件。下载地址:https://wordpress.org/plugins/batcache/

Memcached Object Cache缓存插件,取出其中object-cache.php文件放入wp-content/目录下,默认开启,无后台启动选项。下载地址:https://wordpress.org/plugins/memcached/

做好上面的部分再修改wp-config.php文件中的配置,如下(没有就直接添加即可)

define(‘ENABLE_CACHE’, true);//开启memcached缓存
define(‘WP_CACHE’, true);//开启默认缓存
好了,到这里再看看你的WordPress网站打开速度如何?一般来说如果上面的步骤都做了,你的WordPress网站打开速度应该在1秒以内,一般只需0.X秒即可打开网站,如果有图片等大资源,配上CDN会更快哟。到此sql查询次数也会降低至20次以内(各主题代码优化不一致,听说有的甚至能降低至2个sql查询,不知道他是怎么做到的很好奇,有知道身边有这样的朋友麻烦告诉他,他又多了一个粉丝)。

高级加速
上面部分应该可以算是WordPress性能优化提速的中级教程了,下面才是高级教程,学习下面的教程需要你的服务器支持memcached内存缓存,并且个人对WordPress函数有一定理解,否则改坏了程序,网站跑不起来别赖我,再提醒一句,一定要提前快照,切记!

在进入高级教程前我们需要先了解3个WordPress函数,它们分别是:

wp_cache_set() 把数据写到缓存中。
wp_cache_get() 读取缓存数据。
wp_cache_delete() 删除缓存。
它们需要用到如下四个参数

这些函数会涉及到的四个参数:

$key: 对象的 key。
$data: 要存的值。
$group: 分组,可选参数,用来把缓存对象就行分组。
$expire: 过期时间,可选参数,如果是默认缓存,这个函数没用,如果是内存缓存,是设置缓存的时间,单位是秒,默认为0(0的意思就是永远,不会自动过期)。
基本使用
$data = wp_cache_get(“缓存key”,’缓存分组’);
if(false === $data ){
$data = wp_get_related_posts();//缓存数据获取
wp_cache_set(‘缓存key’,$data ,’缓存分组’,3600);
}
echo $data ;
上面的代码意思是,当我们加载网页时会调用WordPress函数获取数据,遇到加载数据就先从缓存中取我们需要的数据,然后判断有没有从缓存中取出数据,没有就再通过查询获取数据,有就直接使用缓存数据,这样就避免了多次sql查询,减少查询次数,降低页面生成时间。

如果需要更新缓存,只需要删除原来的缓存数据,再次访问时会自动生成新缓存。

wp_cache_delete(‘缓存key’,’缓存分组’);
好了,学会如何使用WordPress的缓存函数后,我们还需要对我们的主题进行调试DEBUG,上面的操作已经让我们的主题查询次数大大降低,比如我的大前端主题首页就从2200+查询降低至11次查询。怎么找到WordPress没有缓存的函数位置这里就不多讲了,我不是为了讲主题调试的。我在大前端主题header文件中找到5处不会自动生成缓存的地方,为了降低sql查询,我们就为这几处修改代码,实现缓存。

大前端dux主题中加载body标签的class时使用了body_class(_bodyclass())这个函数,这个代码不会被缓存,因为它会根据每个页面不同生成不同的class属性,应该就是这个原因导致WordPress没有对它进行缓存(我猜的),我们自己写上判断页面,然后使用上面的代码进行缓存与调用即可,原来查询11次,现在效果如下:

WordPress缓存提速优化进阶学习实现0sql查询
WordPress缓存提速优化进阶学习实现0sql查询

在修改主题时要注意一个问题,WordPress很多函数并不是以return形式返回数据,而是直接使用echo进行打印,因此,我们在对数据做如下操作时是错误的。

$data=body_class(_bodyclass());
body_class函数原型大家可以查一查,它就是使用echo直接输出的,当我们使用上面的代码赋值时是错误的,因为该函数没有给我们返回值,所以我们可以使用下面的方法:

ob_start();//打开一个缓冲区,打开之后下面的输出将会暂缓输出。
body_class(_bodyclass());//输出class,但在前面打开缓冲区之后,它会暂缓输出
$data=ob_get_contents();//取出数据缓冲区的值,赋值给我们的变量。
ob_end_clean();//关闭并清理缓冲区,这时我们的缓存已经写入了,因此关闭缓冲区并清理。
//WordPress的内存缓存写入。
优化完整个页面后,页面生成时间可以减低至0.02秒左右,不知为何我纯输出静态HTML首页都有6个查询,他们分别查询了options、posts、term_taxonomy、postmeta表。这是为何?难道0sql只有把整个网站静态化,根本不走数据库?希望有知道的大神指点。以上内容部分参考优化大神我爱水煮鱼,喜欢的话点个赞呗。

cera aliyun tengxunyun cloudiplc

相关推荐

用 Nginx|Redis Cache 给 WordPress 提速

前言 目前比较多的 WordPress 的缓存方案都是使用对象缓存插件并对应 Page 缓存来实现提速。但是这样的话我们都是经过 Nginx/Apache —— PHP-FPM/Mod-PHP —— Redis 拓展 —— 对象缓存插件 —— Redis。 这个拓扑图其实还是漫长的,性能受限于 PHP。 而这里我们通过 SRcache模块为缓存提供了一个整合后端存储的能力,可以配合Redis使用.如果Redis访问没命中,则发起一个后端请求,获取到数据之后自动缓存到Redis,下次访问将直接调用Redis中的缓存。 拓补图: Nginx —— SRcache 拓展 —— Redis。 直接跳过 PHP,来获得更快的页面访问速度。 评价 WordPress 比较经典的组合就是 Varnish + Apache/Nginx + Memcached + W3TC。这个组合很经典也很抢单,但槽点就是 Varnish 有一定的学习成本,并且大版本号的升级都会更换语法。 Nginx+Redis Cache 配置就比较简单,轻轻松松就搞定了。而且配置虚拟主机啥的都不用学习成本,也不会多一个软件来占用你的端口等等。 准备 首先,我们需要 Redis 和 Nginx 并且配备如下拓展:srcache-nginx-module, redis2-nginx-module, HttpRedisModule 和 set-misc-nginx-module 。如果安装拓展的方法就不介绍了,比较简单粗暴的就是安装 OpenResty ,默认集成哦! …

WordPress博客网站使用Memcached和Redis缓存哪个更好|

今天小白得到了一台4核8G的服务器,马上安装上宝塔。接下来就遇到了一个选择困难综合征。到底给数据库安装那种缓存好。是Memcached缓存,还是Redis缓存?接下来小白将详细分析下这两种的区别。 首先,我们今天研究的大前提是#wordpress#博客,那么注定数据量不会太大。访问量也不是超多那种。 一、#Memcached#和#Redis#区别 1、数据存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。 2、数据支持类型 Memcache对数据类型支持相对简单。 Redis有复杂的数据类型。 3、使用底层模型差别 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。 4、#value#值大小不同 redis最大可以达到1GB,而memcache只有1MB。 二、Memcached和Redis哪个更适合WordPress 根据上面对比我们发现memcached为内存存储,其占用量最大就512MB内存。而Redis可以无限大占用内存和硬盘空间。memcached更适合存储简单的值。所以小白得出的结论是针对内容不多的WordPress博客建议选择用memcached做MySQL数据库的缓存。 但是这里也有一种例外,有些采集站大佬。因为数据量超多。大部分都超过10万篇文章。那种还是用Redis吧。毕竟有这么多内容的服务器配置应该也不低吧。 以上就是今天要介绍的所有内容,如果有错误欢迎留言指出。

1M小水管|wordpress优化服务!

WordPress 加速优化服务 速度是网站成功的第一因素,我们可以把您的 WordPress 网站打开速度提升到0.*秒! 大家应该发现了,本站的打开速度,国内站采用的1M腾讯云的小水管机器, 但是访问速度是毫秒级别的,国内站地址:https://yangmaodang.org 就算是国外站也是在半秒以内可以迅速打开,国外分站地址:https://yangmaodang.org 网站打开速度快有利于搜索引擎,也有利于网站转化率。 优化套餐 首先,优化之前,首先要确保你使用的服务器有 ROOT 权限,就是要至少买个云主机,不要虚拟主机了,虚拟主机是没有办法优化的,使用虚拟主机的不要来找我,毕竟大神也不是万能的。 安装插件调试 使用静态缓存加速 安装MED缓存 各类黑科技 图片使用CDN分离 价格为188元,如果网站没有备案推荐购买首页的习梦云服务器抗D抗C效果逆天,国内推荐腾讯云学生机,现在搞活动学生机1核心2G内存1M带宽1年只要240元可以联系我购买,前提你有备案域名,如果你没有CDN,可以把图片用第三方图床,1M小水管逆天的时候到了!购买服务可以包半年更新,联系QQ:1064310077 案例网站-国内1M:https://yangmaodang.org 国外分站地址:https://yangmaodang.org  

WordPress查询指定时间范围内最热门|评论最多文章

WordPress查询指定时间范围内最热门、评论最多文章仅仅靠WordPress提供的函数是不行的,我们需要按照自己的需求条件执行数据库查询才能获得对应数据,比如本站首页的热门讨论模块,就是采用了数据库查询的方式取得的文章数据。 这两天趁放假,将博客的主题功能优化了下,新增了一些功能,显示效果做了一些细节上的调节。大家可能发现了,我在首页新增了一个热门讨论模块。这个模块里显示的是一个月时间内的评论次数最多的文章,总共显示5篇,并按照评论数量从高到底排列。下面来看看具体怎么实现的,部分代码来自网友。 实现代码 将以下代码复制到你的主题目录下functions.php文件中。 /* 某段时间内评论最多最热文章*/ function most_comm_posts($days=7, $nums=5) { //$days参数限制时间值,单位为‘天’,默认是7天;$nums是要显示文章数量 global $wpdb; $today = date(“Y-m-d H:i:s”); //获取今天日期时间 $daysago = date( “Y-m-d H:i:s”, strtotime($today) – ($days * 24 * 60 * 60) ); //Today – $days $result = $wpdb->get_results(“SELECT comment_count, ID, post_title, post_date FROM $wpdb->posts WHERE post_date BETWEEN ‘$daysago’ AND ‘$today’ ORDER BY comment_count DESC …

微信扫一扫,分享到朋友圈

WordPress缓存提速优化进阶学习目标0sql查询