gpt4 book ai didi

php - 使用 IIS8 输出缓存 .PHP 文件 - 第一个字节的时间

转载 作者:可可西里 更新时间:2023-10-31 22:54:38 27 4
gpt4 key购买 nike

我有一个带有 4 个内核和 5 GB RAM 的 VPS,带有 Windows Server 2012 和 IIS8。我在上面运行一个 WordPress 站点,MySQL 作为 InnoDB 数据库,MySQL 已经分配了大约 70% 的可用 RAM 用于缓存/缓冲区,效果很好。我启用了 Wincache,除了 .php 文件之外的所有内容都启用了输出缓存。我的第一个字节时间为 1400-1800 毫秒,我认为这太慢了。

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

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

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

最佳答案

经过多次头痛之后,我终于弄清楚了这个缓慢的 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 问题的人!

关于php - 使用 IIS8 输出缓存 .PHP 文件 - 第一个字节的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23857809/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com