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

时间:2014-05-25 17:03:50

标签: php wordpress caching output iis-8

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

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

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

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

1 个答案:

答案 0 :(得分:5)

经过多次头痛之后,我终于想出了这一缓慢的TTFB来自哪里。 PHP / IIS8的MySQL驱动程序MySQLnd有错。由于AAAA(IPv6)记录优先于A(IPv4)记录,因此本地主机'将返回IPv6地址。由于PHP中的MySQL驱动程序(mysqlnd)无法处理IPv6地址,因此在尝试通过IPv4连接之前,首先必须超时。

我将TTFB从1400-1800毫秒削减到仅200-400毫秒。已经好多了。剩下的我可能归因于.css / .js调用和其他事情。

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

希望这可以帮助其他TTFB问题的人!