由于大量的stream量,我的网站在三天内基本没有响应。
页面上的JavaScript元素定期向服务器请求图像,并且由于人们打开浏览器窗口(因此从未停止请求图像),连接数量成为问题。
我重新devise了网站使用一个精灵并且只加载一次; 然而,现在有大量的404错误,因为人们仍然试图加载旧的内容。 该网站在VPS上,由于延迟而无法使用。
更糟糕的是,我最初认为延迟是由于缺lesscaching。 我向.htaccess文件添加了一个指令,以便访问者caching资源(包括旧的低效代码)。
我的主机一直无法纠正这个问题。 可以做些什么来强制持久连接停止尝试加载过时的内容?
你不能阻止某人向一个不存在的资源发出请求(例如,任何人都可以为一个不存在的页面组成一个URL,并获得一个404)。 但是,您可以采取一些措施来改善这种状况。
首先,更改新内容的文件名 – 如果您仍然在html中引用JavaScript文件,请确保它的名称与具有问题的名称不同,以便浏览器不会使用caching的副本。
其次,让你的404页面尽可能简单(绝对是静态页面,而不是dynamic的,非常小的)。
第三,Apache在处理大量没有大量可用内存的并发请求(它为每个请求启动一个工作线程)方面效率不高。 考虑(至less暂时)在Apache之前添加另一台服务器,以更有效地处理404请求。 一些例子可能包括:
我会立即开始创build一个零字节的文件,以摆脱404的和最小化每个检索的成本。
我的主机系统pipe理员用脚本解决了这个问题:
试图访问旧内容的任何IP地址(本质上,这样的用户不断发出请求并消耗连接)会立即添加到服务器的防火墙中。 到目前为止,只有几百(几千)的访问者被发现和阻止。 解决scheme工作得很好。