如何提高WordPress网站的站点/页面性能?

时间:2012-02-29 作者:Emma

为了提高站点/页面性能,我添加了以下代码来接受标题:

<php flush(); ?>
这是可行的,但可能没有它所能做到的那么好。有什么建议吗?

我还尝试使用以下代码利用浏览器缓存:

# Begin Expires Caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
# End Expires Caching
同样,任何优化结果的建议都将不胜感激。

4 个回复
SO网友:Dougal Campbell

最常见的尝试是一个内容缓存插件,如W3 Total CacheWP Super Cache. 两者都将整个页面缓存到磁盘,并允许Apache web服务器完全绕过PHP处理许多页面视图。使用W3 Total Cache,您还可以缓存系统对象和数据库查询的结果,还可以使用CDN(内容分发网络)或本地内存缓存服务器,如memcached、APC或XCache。此外,它还可以将CSS和JS进行组合和最小化,这可以提高性能(通过减少浏览器必须发出的请求数量)。

其他策略包括将图像组合成单个sprite image, 并且使用CSS只显示适当的部分。这减少了浏览器必须下载的单独图像的数量。

其他需要更多工作/知识/资源的可能性:从Apache切换到Nginx或其他高性能web服务器。从mod_php切换到mod_fastcgi+php fpm。为您的web服务器实现多个后端,前面有一个高性能缓存代理服务器。Multiple MySQL servers.

SO网友:Lucian

最好的选择是使用缓存插件。我还建议使用W3 Total Cache,但在安装它之前,请确保备份数据库和文件,并将wordpress更新到最新版本。

Wordpress导致数据库负载最高。如果同时有许多查询,处理器将不得不努力检索数据。缓存插件将尝试提供已经提取的内容,如果他注意到其他内容没有改变。

缓存图像、脚本和文档只会节省带宽,这不是wordpress的主要问题。优化图像和脚本以节省带宽是可以的,但它们只是按原样提供的文件。当wordpress引擎从数据库检索数据时,就会出现问题。

如果你在网站上进行详细的加载速度测试,你会发现至少有一半的加载速度是由“等待”引起的。您的浏览器正在等待服务器检索数据并进行处理。如果在静态页面上执行相同的测试,则该时间几乎为0。另一半时间是下载图像的实际时间,这取决于服务器带宽。如果缓存和优化所有图像和脚本,也可以节省20-50%的时间,但必须注意,浏览器已经有了存储脚本和图像的默认缓存系统。

SO网友:Dwayne Charrington

优化Wordpress网站的常用方法是使用像W3 Total Cache这样的插件,但很多人没有意识到,而且你已经发现,这样的插件与其他插件以及各种主机存在大量兼容性问题。插件W3 Total Cache在处理一整堆不同的服务器配置方面做得很好,但通常是以使用最佳设置为代价的。

在优化不需要插件的Wordpress网站时,您可以尝试以下几点:

  1. Use a content delivery network (CDN) - 亚马逊有一个很棒的产品叫做Cloudfront 如果您熟悉CDN,这将减少站点HTTP请求,因为浏览器通常只能有两个到一台服务器的并发HTTP连接。Cloudfront还将从靠近访问者的服务器上为您的文件提供服务器,以便他们获得最理想的传输速度和更少的连接跳跃,这意味着更快的页面加载。

    如果您不想为CDN付费,您可以通过添加映射到实际域的子域,诱使浏览器认为它正在加载CDN。子域被视为一个单独的域,因此可以释放对常规域的请求。例如,您通常的站点是:http://www.somesite.com, 假CDN是http://images1.somesite.com/imagefile.jpg, http://images2.somesite.com/imagefile2.jpg 等等我通常添加大约4或6个,然后使用javascript或PHP将子域随机附加到图像URL。

  2. Combine and minify your stylesheets and scripts - Wordpress有一些插件可以为您将站点上的所有JS和CSS结合在一起,但为了最终控制,如果可以的话,您可以自己动手。

  3. Use CSS image sprites - 对于站点加载的每个图像,它都会发出请求;对于背景图像,您可以将它们组合成一个更大的图像,并使用background position属性导航它。了解精灵here.

  4. Add an Expires or a Cache-Control Header - 这本质上告诉访问者浏览器何时从服务器检索新文件,何时从缓存加载新文件。了解mod\\u expireshere.

  5. Configure ETags - 与其重申已经说过的话Yahoo! article 将解释什么是ETag以及如何正确配置它们。

  6. Use Flush() - 使用PHP flush函数,您可以将部分就绪的HTML响应发送到浏览器,以便浏览器可以在后端忙于HTML页面的REST时开始提取组件。把它放在你的结尾标签后面,如下所示:</head><?php flush(); ?>

SO网友:Boutros AbiChedid

这样我就不会重复同样的信息了。几个月前,我写了一篇关于以下内容的教程:14 Tips for Maximum WordPress Performance & Speed

希望这有帮助。

布特罗斯。

结束

相关推荐

在创建术语的同一插件中调用CLEAN_TERM_CACHE()失败,单独调用时成功吗?

我的插件代码如下。在myPlugin\\u cleanup()函数中,我创建了一些类别,并将术语id 1指定为父级。由于known bug with creating categories via script (无法创建category\\u children数组,并且在访问包含类别列表的页面时会导致致命错误),我将clean\\u term\\u cache()调用直接放置在创建类别的函数下方。然而,它不起作用。未创建category\\u children选项。有趣的是,如果我创建一个插件,其唯一功