【问题标题】:Output Caching .PHP files with IIS8 - Time To First Byte使用 IIS8 输出缓存 .PHP 文件 - 第一个字节的时间
【发布时间】:2014-05-25 17:03:49
【问题描述】:

我有一个带有 4 核和 5 GB RAM 的 VPS,带有 Windows Server 2012 和 IIS8。我正在使用 MySQL 作为 InnoDB 数据库在其上运行 WordPress 站点,MySQL 已将大约 70% 的可用 RAM 用于缓存/缓冲区,效果非常好。我启用了 Wincache,为基本上所有但 .php 文件启用了输出缓存。我的第一个字节时间是 1400-1800 毫秒,在我看来这太慢了。

我为所有 PHP 文件启用了输出缓存,将其减少到 8 毫秒。完美的!或者我是这么想的……当然,因为它现在正在缓存整个 PHP 文件,所以它不会加载任何后续页面。这是因为 WordPress 将后续页面作为查询加载,而不是作为新文件加载。

我不得不完全关闭 PHP 文件的输出缓存,但似乎找不到任何其他解决方案来减少首字节时间/响应时间。这里有没有人有任何好的建议使用 Wincache 或输出缓存来实现我之前的 ~8ms 结果?

我们也非常感谢任何开箱即用的建议!

【问题讨论】:

    标签: php wordpress caching output iis-8


    【解决方案1】:

    经过多次头疼后,我终于弄清楚了这个缓慢的 TTFB 的很大一部分来自哪里。 PHP/IIS8 的 MySQL 驱动程序 MySQLnd 有问题。由于 AAAA (IPv6) 记录优先于 A (IPv4) 记录,“localhost”将返回 IPv6 地址。由于 PHP 中的 MySQL 驱动程序 (mysqlnd) 无法处理 IPv6 地址,因此在尝试通过 IPv4 连接之前,它首先必须超时。

    我将我的 TTFB 从 1400-1800 毫秒减少到仅 200-400 毫秒。已经好多了。其余的我可能可以归因于 .css/.js 调用和其他东西。

    要解决上述问题:不要使用“localhost”,而是使用 127.0.0.1 或 gethostbyname('localhost'),因为此函数将始终返回 IPv4 地址。后者是更好的解决方案,因为您可能希望有一天使用主机名连接到外部 MySQL 数据库。

    希望这能帮助其他有 TTFB 问题的人!

    【讨论】:

    • 尽管我设法“修复”了这个问题。请随时添加更多建议以进一步降低 TTFB!
    猜你喜欢
    • 2017-06-16
    • 1970-01-01
    • 2015-01-17
    • 2018-01-23
    • 2016-05-26
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多