我正在更改一个巨大的数据库表,磁盘利用率提高到90-100%。
NGINX像往常一样快速提供静态内容,但PHP页面加载时间为10-20秒,而不是通常的0.2秒。
我有
echo 'Generated in ' . microtime( true ) - $start . ' sec.';
在每个页面的末尾,它显示页面是在 0.1 秒内生成的,而加载需要 10+ 秒:
Request sent 0.22 ms
Waiting (TTFB) 12.84 s
Content Download 59.33 ms
平均页面大小为 30-40 kb,NGINX 缓冲区为:
fastcgi_buffers 32 32k;
fastcgi_buffer_size 64k;
所以NGINX不应该使用磁盘来服务页面。
为什么会这样?是否有一些NGINX或PHP-FPM设置迫使他们使用磁盘而不是将数据保存在内存中?
如果你想更快地存储生成的响应,你应该考虑某种缓存。这是webdev中的一个大话题,在这里得到了很好的解释(对于nginx(:
https://www.nginx.com/blog/nginx-caching-guide/
请记住在响应中设置缓存 HTTP 标头,例如max-age
、cache-control
。在此处阅读有关标头的信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control