加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:30:44 所属栏目:PHP教程 来源:网络整理
导读:我有一个带有4个内核的VPS和5 GB内存的 Windows Server 2012和IIS8.我正在使用 MySQL作为InnoDB数据库运行一个WordPress站点,MySQL已经将大约70%的可用RAM提供给缓存/缓冲区,这非常有用.我启用了Wincache,基本上所有BUT .php文件都启用了输出缓存.我的第一
我有一个带有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结果?

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

解决方法

在经历了许多令人头疼的事情之后,我终于想出了这个缓慢的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问题!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读