输出缓存.php文件与IIS8 -时间到第一个字节


Output Caching .PHP files with IIS8 - Time To First Byte

我有一个带有4核和5gb RAM的VPS, Windows Server 2012和IIS8。我在它上面运行一个WordPress网站,MySQL作为InnoDB数据库,MySQL已经给了我大约70%的可用RAM来缓存/缓冲,这工作得很好。我有Wincache启用,输出缓存启用基本上一切,但。php文件。我到第一个字节的时间是1400-1800毫秒,这在我看来太慢了。

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

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

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

经过多次头痛之后,我终于弄清楚了这个缓慢的TTFB的大块来自哪里。PHP/IIS8的MySQL驱动程序mysqland有问题。由于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 DB。

希望这将帮助其他人与TTFB问题!