如何防止一个网站缓慢的首次加载启动?

我相信你已经注意到,对于许多服务器来说,如果你是第一个访问者几个小时,那么网站的加载时间是相当长的。 你知道这是为什么吗?(​​它只是服务器caching?),以及如何使该网站快速即使是第一个访问者? 在这种情况下,我们来设置一个正常的LAMP。 谢谢你的帮助!

有很多潜在的原因。 几乎肯定不只有一个原因。

一些可能性:

  • 该网站正在运行一些像FastCGI,mod_php / mod_perl / mod_python等池机制。如果这些或Apache没有configuration为保持最小的服务器池,他们将不得不重新启动应用程序,当一个新的请求到达,有该应用程序没有可用的服务器已经加载。
  • 应用程序使用数据库连接池。 除了需要重新build立数据库连接之外,与上述相同的问题。 一些关系数据库在打开一个新的连接时会非常缓慢(大量的开销)
  • 各种caching机制(对于运行负载平衡器或高速caching(如memcached)的高性能站点)可能需要直接从站点刷新其信息(如果信息已过时)。 也可以应用到浏览器的本地caching:虽然它通常可以忽略像css,js,images这样的网站上的所有附加静态文件,但是一旦这些文件从caching中过期,就需要重新获取它们。
  • 网站可能有维护活动,如负载较低且网站未被访问时发生的备份。
  • 甚至可能与服务器的操作系统磁盘高速caching一样低,这可能是由于同一台服务器上的其他站点占用了caching,推出了一段时间内没有被访问的caching版本(这正是磁盘caching应该这样做,caching经常使用的文件,而不是很less使用的文件)。 这应该引起的延迟很可能是非常小的,对于人来说是不明显的。

缓解策略当然取决于实际的原因。 但通常应该做的一些事情:

  • 确保Apache的MinSpareServers / MinSpareThreads和其他性能设置configuration正确。 尝试了解Apache如何以及为何产生更多的服务器/线程。
  • 确保像FastCGI这样的应用程序服务器也被正确configuration,以保持足够的可用池。
  • 正确configuration数据库连接池或始终打开持久数据库连接。
  • 确保所有包含的文件(css,js等)都可以caching,并具有合理的到期时间。