有了新的WordPress及其新功能,似乎WordPress不仅具有简单的博客引擎功能。但是,每天说10k-> 100k用户使用WordPress的缩放效果如何?
有那么多用户,其中很大一部分将是拥有一个良好的缓存策略,但是WordPress的开发水平可以提供帮助,使这一过程变得简单,并为您提供所需的控制权。Fx能够缓存页面的一部分并仅呈现用户自定义的部分,支持主/从数据库设置以及类似的东西吗?
有了新的WordPress及其新功能,似乎WordPress不仅具有简单的博客引擎功能。但是,每天说10k-> 100k用户使用WordPress的缩放效果如何?
有那么多用户,其中很大一部分将是拥有一个良好的缓存策略,但是WordPress的开发水平可以提供帮助,使这一过程变得简单,并为您提供所需的控制权。Fx能够缓存页面的一部分并仅呈现用户自定义的部分,支持主/从数据库设置以及类似的东西吗?
Answers:
显然,快速Web服务器提供的静态文件无法缩放,而且任何必须弄清楚要加载什么然后再加载的CMS都无法正常运行,无论是WordPress还是其他方式。问题之一是每个URL请求所需的数据库查询的数量,以及我之前2年专门与Drupal一起工作的经验以及现在与WordPress一起工作2年以上的经验是,WordPress在该部门中要好得多。
也就是说,几乎没有任何功能可以“开箱即用”扩展;这就是随着可扩展性需求的增长您能做什么?
在“大量流量”的低端,有出色的缓存插件和与廉价CDN的集成,您可以在无IT预算和低托管预算的情况下做得很好。以下是一些其他要检查的问题和答案:
可以通过性能分析来确定性能瓶颈:
一旦发现瓶颈,您就可以使用Transients API之类的工具进行本地化优化。该问答提供了可以使用Transients API进行优化的示例,并说明了如何:
如果您真的想拔出大手笔,则可以配置Memcached,HyperDB,Nginx和/或更多功能来加快处理速度(似乎后者实际上正在演变为从WordPress获得惊人的可扩展性的方式):
最后,出现了专门针对性能的新兴的以WordPress为中心的虚拟主机,例如WP Engine,ZippyKid等:
因此好消息是所有规模都非常好 ; 从技术的复杂性和成本的漫长而漫长的低端开始,随着流量的显着增长而增加。从WordPress开始,它会很棒。如果流量确实在增长,并且您将其合理地货币化,您会发现按需扩展具有很大的成本效益。
至少是IMO。:)
不要对共享托管寄予太大期望-如果您在共享主机上,不要怪WordPress的速度慢。共享主机可能会将数千个帐户塞进一台服务器。因此,您可以花一整天的时间优化每月10美元的帐户,这无关紧要。还要提防营销流行语-只是因为它说“云”并不意味着您不会与数百或数千人共享一台服务器。
我认为目前不需要缓存插件。如果您查看WP源代码,那么核心中已经包含了高级缓存。缓存的缓存缓存的缓存-提防,这可能适得其反。
让您慢下来的主要原因是MySQL查询速度慢,开箱即用的WordPress不会给您带来麻烦。但是,我必须“限制”我的评论查询,因为我有50,000多个评论。(这个问题解决了吗?)此外,如果您做的是非典型的事情(例如上千种类别),那也可能是一个问题。
我将Linode 512与NginX一起使用,“顶部”显示PHP和NginX在每个请求的不到1/100秒的时间内完成工作。几乎所有CPU时间都与MySQL捆绑在一起。您可以使用20美元的Linode每月提供一百万页的服务,但是一旦您开始添加插件和照片,我想您将需要一个“ 1GB” Linode。从我的角度来看,这几乎是线性的:如果网页浏览量增加了一倍,则只需将Linode的大小增加一倍。
免责声明:我不为Linode工作。
更新(大约2年后),因为您要使用PHP缓存页面的某些部分,所以我使用的这是一个简单的解决方案,它出奇的快。我在1/100秒内每页缓存了几个单独的部分/部分。似乎ramdisk可以使速度更快,但是对于我的需求来说速度足够快:
$cache_file = "./cache/portion-1". $since; // maybe round() this $since timestamp
$cache_life = 1000; // seconds to keep this cached
$filemtime = filemtime($cache_file); // returns FALSE if file does not exist
if (!$filemtime or (time() - $filemtime >= $cache_life)) {
// heavy lifting starts
$output = 'Heavy!';
// heavy lifting ends
if (!file_put_contents($cache_file,$output,LOCK_EX)) { echo 'error'; } // save the cache
echo $output;
} else {
// load from cache
$output = file_get_contents($cache_file);
echo $output;
}
归根结底,有3件事会导致WordPress大规模放慢速度,而归结为:
一旦具备上述条件,就可以添加缓存-例如Varnish,CDN,页面缓存等。
如果需要横向扩展,可以使用PerconaDB XtraDB创建数据库,并使用Unison创建文件。这样,您可以将1个节点用作wp-admin和cron运行程序,而其他节点则在负载均衡器后面为Web流量提供服务。