上一篇 WordPress 全方位性能优化指南(上)主要从网站性能指标、优化缓存、MySQL 等方面给你们介绍了如何进行 WordPress 性能优化,但还远远不够,毕竟像 WordPress 这样的大范围的被使用的主题模板,能够优化的地方仍是不少的。javascript
今天主要从主题优化、缓存优化、图片优化等各个方面和你们聊一下。php
WordPress 的一大特点就是具备丰富的主题,不一样的主题页可能致使页面的加载时间不一致,其 function.php 文件中包含带有插件特性的代码,所以插件可能致使的问题,主题也可能致使。若是你怀疑主题致使了性能问题,可对该主题进行性能测试。css
并且,主题中使用了大量的 JS 、图片或者css文件等,不过 WordPress 的好处也就在于其可编辑,若是能有特定的工具能够帮助前端人员分析 页面资源加载耗时,就像下图这样的,会大大的方便前端优化人员的工做。 html
就这个页面资源加载耗时的功能,给你们推荐几个不错的工具:New Relic、OneAPM Browser Insight、AppDynamics、Ruxit前端
数据库表应当按期进行优化(或者修复),以保持最佳性能,对于这个需求,给你们推荐个插件, WP-DBManager ,该插件还可用于数据库备份,这对任何博客网站都相当重要。java
有了 WP-DBManager,你只要安排好计划,就能够放手让插件自动完成工做了。或者,你也能够试试 phpmyadmin 之类的工具,手动优化或修复表格。数据库
前端优化传统的方法一直是将 CSS 文件放在页面头部使之最早被加载,而将 JS 文件(尽量地)放在页面[底部],可谓金科玉律。apache
可是不少时候咱们要结合实际状况来看,例若有的时候页面渲染都加在完了可是有些按钮功能不可用就是由于 JavaScript 尚未加载完毕。关于这个问题以前看过一个帖子浏览器
前端性能优化(三)——传统 JavaScript 优化的误区缓存
里面有句话讲的很好:
咱们优化的目的,就是不要让用户一直得不到响应,避免空白等待,让用户体验愈来愈好。
PHP 是一种解释型语言,这意味着每次运行 PHP 代码时,都会将其编译为所谓的 op-codes,以后再在系统中执行这些 op-codes。经过安装 eAccelerator 之类的 opcode 缓存,就能将编译过程进行缓存。固然也存在其余的缓存解决方案。
安装 eAccelerator,解压压缩包,进入 eAccelerator 文件夹,输入:
phpize ./configure make make install
便可安装 eAccelerator 了。
接下来,建立用于存储的临时文件夹:
mkdir /var/cache/eaccelerator chmod 0777 /var/cache/eaccelerator
最后,启用 eAccelerator。在 php.ini 文件(一般在 /etc/php.ini 或 /usr/lib/php.ini 路径下)底部输入如下代码:
extension="eaccelerator.so" eaccelerator.shm_size="16" eaccelerator.cache_dir="/var/cache/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"
这些改变会当即生效,PHP 无需重启。
注释1:专门针对于PHP应用进行优化的工具不是不少,国内外好的也就那么几家,推荐给你们看一看:New Relic、OneAPM Application Insight、AppDynamics。
值得一提的是,OneAPM 的这款 Application Insight 产品还支持往前端页面中自动注入他们家的另一款针对前端性能监控的工具 Browser Insight,这样就避免了相关的插码工做,下降了工做量,前两天在一篇文章中看到过相关介绍,以为还不错,也推荐给你们:拒绝「技术栈」选择恐惧症
注释2:若是你还想要更好的性能,可使用 WP Super Cache 与 eAccelerator 插件。
注释3:不幸的是,如果 PHP 做为 CGI 运行,eAccelerator 便没法使用。你能够尝试使用 fastcgi,该工具能与 suExec 和 eAccelerator 协同工做。
人们常常忽视,图片还能够进一步优化(变得更小),从而大大缩短页面加载时间。 设想,你只要打开一个网站,点击浏览器中的一个按钮,就能将网站中的全部图片进行优化,并打包在一个 zip 文件中,岂不是完美?
smush.it 与其 Firefox 插件就能作到这一点,其效率真是使人赞叹,具体方法,在下面这个文章中有具体的介绍:
若是你遇到 WordPress 管理界面逐渐中止响应、没法发布或更新文章的状况,极可能是遇到了 mod_security 的限制。
ModSecurity 是用于提升网站安全度的 Apache 模块,能阻止特定的系统入侵。然而,它有时会认为正常的 WordPress MySQL 查询语句行为可疑而将之列入黑名单,进而致使网站运行缓慢甚至无响应。
检测是否的确如此,可检查 Apache 错误日志,好比:
tail -f /usr/local/apache/logs/error_log
进而查看以下内容:
ModSecurity: Access denied with code 500 (phase 2) ... [id "300013"] [rev "1"] [msg "Generic SQL injection protection"] [severity "CRITICAL"] [hostname www.prelovac.com"] [uri "/vladimir/wp-admin/page.php"
这说明网页访问被 id 为 300013 的安全条例拒绝。解决办法是让此安全条例将问题页面加入白名单。
具体操做是,编辑 Apache 配置文件(可能的位置是 usr/local/apache/conf/modsec2/exclude.conf),添加如下代码:
SecRuleRemoveById 300013
这会让给定的安全条例将此页面加入白名单,网站得以正常运转。
致使 WordPress 博客运转缓慢的缘由还可能包括 rss ping 与 pingback 超时。
默认状况下,WordPress 会试图对 ping 列表(起一般位置是设置>写入面板)中的服务器发起 ping,如果其中一个响应超时,就会拖慢整个进程。
第二个缘由是 post pingbacks,这是 WordPress 用来通知文章中外链网站的机制。你能够在设置>讨论中取消选中“尝试通知文章中超连接的全部博客(会拖慢文章加载速度)”,从而禁用 pingbacks。
清空 ping list 并禁用 pingbacks,看是否有助于提升文章加载速度。
大多数浏览器的设置是从一个域名加载 2 到 4 个文件,并发地从多个域名进行下载。若是你将一部分文件移到不一样的域名下(好比子域名),浏览器就会并发地下载 4 个或更多文件。
将主题图片上传到本身建立的子域中是不错的优化办法。我我的就建立了 demo.prelovac.com/images 路径,并将全部主题图片上传到这儿,以后,再把主题 style.css 中的图片文件 url 改成绝对路径,大功告成了!
######总结
现代的网站服务器与网站不断发展,愈来愈多地依赖于诸多组件,WordPress 由于其特色被普遍应用于各类网站、博客之中,因此对其有优化需求的用户也很是之多。
此次在这两篇性能优化的文章中主要介绍了基于 WordPress主题的网站优化的多种方式:从网站前端优化、PHP 以及 改进到 WordPress 设置优化。衷心但愿本文能帮助读者建立速度更快、响应更迅速的 WordPress 网站。
Browser Insight 是一个基于真实用户的 Web 前端性能监控平台,可以帮你们定位网站性能瓶颈,网站加速效果可视化;支持浏览器、微信、App浏览 HTML 和 HTML5页面。想阅读更多技术文章,请访问 OneAPM 官方技术博客。 本文转自 OneAPM 官方博客