解决方法而不是使用websockets / ajax-long-pulling

时间:2017-03-30 11:18:57

标签: php ajax

我的网站每隔5秒发出一次AJAX请求,检查数据库是否有过期提醒。我被告知这是不理想的,因为有太多的AJAX调用,有人说如果有很多人打开了几个标签,那就像DDOS你自己的网站一样。

替代方案是使用websockets或ajax-long-pulling。我不能使用websockets,因为我的共享主机没有这个功能。由于连接有限,Ajax-long-pull并不理想。

所以我想到的解决方法是在服务器上放一个只存储令牌的文件。浏览器每隔5秒通过一个隐藏的i-frame读取该文件,如果数据库中的某些相关更改,则更改令牌,这表示浏览器发送AJAX请求以获取新的提醒。

这是否是一个可行的解决方法,可以显着减少服务器上的负载,因为它不会每5秒钟进行如此多的AJAX调用,因为它只是在读取文件?

1 个答案:

答案 0 :(得分:0)

“一个人说它几乎就像......” - 那个人是你网站运行的主机的系统管理员吗?

“因为我的共享托管没有这种功能” - 如果编写大量代码比切换Web提供商便宜,那么你真的需要看看你管理托管的方式。

“由于连接有限,Ajax-long-pulling并不理想” - 你认为同样的问题不适用于websockets吗?

您似乎正在尝试解决您不知道存在的问题。并且您似乎无法评估您所做的任何更改是否会产生预期效果。

在对Comet和websockets进行折扣后,减少对服务器影响的唯一选择是降低轮询频率。但是,您的下一步应该是建立一种能力来评估设施当前对服务器的影响以及如果您更改行为会如何改变。这在共享主机上可能相当棘手 - 最多你会看到其他租户产生很多噪音,但如果你真的消耗了大量资源,我相信一个称职的托管服务提供商会是警告你。