有了新的WordPress及其新功能,WordPress似乎比简单的博客引擎更具功能。但 WordPress每天使用10K> 100k用户使用的尺度如何?

有了许多用户,其中很大一部分将是制定良好的缓存策略,但是WordPress开发了良好的帮助,使它变得容易并为您提供所需的控制。 FX能够缓存页面的一部分,并且仅渲染用户自定义的零件,支持主/从DB设置以及类似的内容?

有帮助吗?

解决方案

清楚地 快速网络服务器提供的量表以及静态文件 以及任何必须弄清楚加载的CMS,然后加载它也不会执行,WordPress或其他情况。问题之一是根据URL请求所需的数据库查询数量,而我的2年前经验专门与Drupal合作,现在与WordPress合作2年以上的是,该部门的WordPress要好得多。

就是说, 几乎没有 有任何力量 要扩展 “盒子外面”;这全都是关于 随着可伸缩性的增长,您可以做什么?

在低端 “很多交通”出色的缓存插件与廉价CDN的集成 您可以在无预算和低托管预算上做得很好。以下是其他一些问题和答案:

有选择 分析以识别性能瓶颈:

一旦确定了瓶颈,您就可以做 本地化优化 与像 瞬态API. 。该问答给出了一个可以使用瞬态API进行优化的示例,并显示了:

如果你真的想 拔出大枪 您可以配置 备忘录, HyperDB, nginx 和/或更多以加快事情的速度(似乎后者确实正在发展成为从WordPress中获得惊人可扩展性的方式):

最后有 新兴的以WordPress为中心的Webhosts专门从事性能WP引擎, Zippykid 和别的:

所以 好消息是所有秤都很好;从非常低的自由和轻松的技术复杂性和成本从流量显着增长的情况下增长。从WordPress开始小,这将很棒。如果您的流量确实增长,并且您的货币化甚至很好,您会发现它的成本效果非常适合扩展。

至少IMO。 :)

其他提示

  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。从我的角度来看,这几乎是线性的:如果pageview倍加倍,则只有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;        
} 

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

  • 托管堆栈 - 您需要一个具有最新软件的好主机-PHP 7,Nginx,Varnish,Redis,Fail2ban和PerConadB都是不错的选择
  • 没有表扫描 - 许多插件是由业余编码器编写的,他们甚至不知道表扫描是什么。需要两件事以避免表扫描 - 可用索引和查询,以其可以使用索引的方式编写
  • PHP循环中没有或几个SQL查询 - 某些插件代码显然仅在微小的站点上进行了测试,并且出于某种原因或另一个原因将循环通过数据库中的每个产品,并为每个产品/帖子进行新的SQL调用。理想情况下,您每页只需少于100平方英尺的查询 - 听起来很多,但实际上并非如此,而<100 <100,您将获得约200ms的TTFB。

一旦将上述设置到位后,您就可以添加缓存 - 例如varnish,cdns,页面缓存等。

如果需要扩展,则可以使用PerConadB Xtradb为数据库创建一个群集,并为文件创建一个群集。这样,您可以将1个节点作为WP-Admin和Cron Runner,而其他节点在负载平衡器后面为Web流量服务。

许可以下: CC-BY-SA归因
scroll top