it-swarm.cn

WordPress的扩展程度如何?

使用新的WordPress及其新功能,似乎WordPress不仅仅是一个简单的博客引擎。但是 每天10k用户使用WordPress的规模是多少 - > 10万用户?

有了这么多用户,其中很大一部分就是拥有一个良好的缓存策略,但WordPress开发得如何提供帮助,使这很容易,并为您提供所需的控制。 Fx能够缓存页面的一部分,只渲染用户定制的部分,支持主/从数据库设置和类似的东西?

34
googletorp

显然 没有任何扩展以及快速Web服务器提供的静态文件 并且任何必须弄清楚要加载什么然后加载它的CMS将无法执行,WordPress或其他方式。其中一个问题是每个URL请求所需的数据库查询数量以及我之前与Drupal合作的2年经验以及现在使用WordPress 2年多的经验是WordPress在该部门中的表现要好得多。

那说, 几乎没有 任何权力 将扩展“开箱即用”;这是关于 当您的可扩展性需求增长时,您可以做些什么?

“大量流量”的低端有 很好的缓存插件 与廉价CDN的集成 你可以在无IT预算上做得很好低托管预算。以下是一些其他问题和答案:

分析选项可以识别性能瓶颈

一旦确定了瓶颈,您就可以进行 本地化优化 使用 Transients API 。此问答提供了一个可以使用Transients API进行优化的示例,并说明了如何:

如果你真的想要 拉出大枪 你可以配置 Memcached HyperDB Nginx 和/或更多速度事情(似乎后者真正演变为从WordPress获得惊人的可扩展性的方式):

最后还有 专注于性能的新兴WordPress webhosts 例如 WP Engine ZippyKid 和别的:

所以 好消息是非常好的所有尺度 ;从免费和简单的低端到技术复杂性和成本只会随着流量的显着增长而增长。从WordPress开始,它会很棒。如果您的流量确实增长,并且您正在合理地将其货币化,那么您将发现在需要时进行扩展会产生非常大的成本效益。

至少是IMO。 :)

37
MikeSchinkel
  1. 不要期望共享主机 - 如果你在共享主机上,不要责怪WordPress的速度缓慢。共享主机可能会将1000个帐户塞入一个服务器。因此,您可以花一整天优化每月10美元的帐户,这无关紧要。还要注意营销流行语 - 只是因为它说“云”并不意味着你没有与100或1000人共享一台服务器。

  2. 我认为此时不需要缓存插件。如果你看一下WP源代码,那么核心已经有了高级缓存。缓存缓存的缓存 - 注意,这可能适得其反。

  3. 减慢你速度的主要原因是MySQL查询速度慢,开箱即用的WordPress不应该给你带来麻烦。但是,我不得不“限制”我的评论查询,因为我有50,000多条评论。 (这是固定的吗?)另外,如果你做了非典型的事情(比如1000个类别?),这也可能是一个问题。

  4. 我使用带有NginX的Linode 512和“top”显示PHP和NginX,每个请求的工作时间不到1/100秒。几乎所有的CPU时间都与MySQL捆绑在一起。使用20美元的Linode每月可以提供100万页,但是一旦你开始添加插件和照片,我认为你需要一个“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;        
} 
4
PJ Brunet

最终有三件事会大规模地降低WordPress的速度,他们归结为:

  • 托管堆栈 - 你需要一个拥有最新软件的好主机 - PHP 7,Nginx,Varnish,Redis,fail2ban和PerconaDB都是不错的选择
  • 没有表扫描 - 许多插件是由业余编码员编写的,他们甚至不知道表扫描是什么。需要做两件事来避免表扫描 - 一个可用的索引和一个以可以使用索引的方式编写的查询
  • 在PHP循环中没有或只有很少的SQL查询 - 某些插件代码显然只在小型站点上进行过测试,并且由于某种原因会遍历数据库中的每个产品并为每个产品进行新的SQL调用/后。理想情况下,每页只需要少于100个SQL查询 - 听起来很多,但事实并非如此,如果<100,您将获得大约200毫秒未触及的TTFB。

完成上述操作后,您可以添加缓存 - 例如清漆,CDN,页面缓存等.

如果需要向外扩展,可以使用PerconaDB XtraDB为数据库创建集群,并使用Unison为文件创建集群。这样,您可以将1个节点作为wp-admin和cron runner,并将其他节点作为负载均衡器后面的Web流量提供服务。

0
Dave Hilditch