2

我在超过 20 分钟未访问后从我的网站加载的第一页非常慢。随后的页面加载速度提高了 10-20 倍。这种症状的常见原因是什么?当我的服务器没有接收到 http 请求时,它会不会处于睡眠状态?

4

3 回答 3

3

我一般会回答这个问题,因为我确信这会让很多新手感到困惑。

真正简短的答案是:缓存

几乎您计算机中的每个程序都使用某种形式的缓存来记住最近已经加载/处理的数据,因此它不必再次进行这项工作。

缓存的大小总是有限的,所以必须扔掉东西。99% 的情况下,过期缓存条目的主要标准是,这最后一次使用是多久以前的?

  • 您的操作系统缓存从磁盘读取的文件数据
  • PHP 缓存页面并将它们编译在内存中
  • CPU 将内存缓存在它自己的特殊更快的内存中(尽管这对大多数用户来说可能不太明显)

有些东西实际上不是缓存,其工作方式与缓存相同:

  • 虚拟内存又名交换。当某些程序没有足够的内存可用时,操作系统必须通过将内存块移动到磁盘上来为它们腾出空间。在更新的操作系统上,操作系统会这样做只是为了让磁盘缓存更大。
  • 一些 Web 服务器喜欢运行自己的多个副本,并在它们之间分担请求的工作量。副本也单独缓存内容,具体取决于设置。当工作负载足够低时,服务器可以终止其中一些进程以释放内存并对计算机的其余部分友好。稍后,如果工作量增加,则必须启动新进程,并在其内存中加载各种数据。

(注意,上面的维基百科链接包含很多细节。我不希望每个人都阅读它们,但如果你真的想了解更多,它们就在那里)

于 2012-04-07T07:39:10.373 回答
2

应该是没睡吧 它只是暂时没有访问并释放它的资源。重新开始需要时间。

如果许多用户经常访问该站点,则它应该每次都快速响应。

于 2012-04-07T06:12:19.690 回答
0

听起来它可能正在缓存。服务器是否与您的浏览器在同一台机器上运行?如果不是,网络配置是什么(相同的 LAN 等)?

于 2012-04-07T06:01:36.270 回答