每 X 秒检查一次 URL 状态会有什么问题吗?
Would there be any issue checking URL status every X seconds?
所以我们有一个逻辑,我们将每 15 秒检查一次 URL 的状态,如下所示:
const http = new XMLHttpRequest();
const alive = (url) => {
http.open("HEAD", url, false);
http.send();
return http.status !== 404;
};
此 url 计划仅在一天中的特定时间工作一段时间,我们的应用程序必须检测它何时返回 200
。一旦完成,我们将显示一个包含 url
内容的 iframe(并清除间隔)。因此,只要它仍然返回 404
,我们就会显示“即将到来”的图像。
继续做这个检查可以吗?在某些时候我们不会在 url 上遇到太多请求错误吗?意识到我们可能无法控制服务器 url。假设大约有 1000 人将访问进行检查的页面。他们中的一些人可能会更早访问该页面并停留在那里。该页面将开始每 15 秒进行一次此检查,直到 url
变为活动状态(这可能会在他们登陆页面后花费数小时)。
要确定某物是否存在,您可能需要 return http.status === 200
。这意味着如果说有内部服务器错误,例如错误 500,则假定它不存在。
对于轮询方法,如果您有很多用户,任何间隔 都可以 过于频繁。
可扩展性的最佳选择是使用基于套接字的通信系统。正如您提到的,您正在使用 node.js。您可以考虑使用 socket.io。当你“上线”时,你可以向所有连接的客户端发出一个事件。
所以我们有一个逻辑,我们将每 15 秒检查一次 URL 的状态,如下所示:
const http = new XMLHttpRequest();
const alive = (url) => {
http.open("HEAD", url, false);
http.send();
return http.status !== 404;
};
此 url 计划仅在一天中的特定时间工作一段时间,我们的应用程序必须检测它何时返回 200
。一旦完成,我们将显示一个包含 url
内容的 iframe(并清除间隔)。因此,只要它仍然返回 404
,我们就会显示“即将到来”的图像。
继续做这个检查可以吗?在某些时候我们不会在 url 上遇到太多请求错误吗?意识到我们可能无法控制服务器 url。假设大约有 1000 人将访问进行检查的页面。他们中的一些人可能会更早访问该页面并停留在那里。该页面将开始每 15 秒进行一次此检查,直到 url
变为活动状态(这可能会在他们登陆页面后花费数小时)。
要确定某物是否存在,您可能需要 return http.status === 200
。这意味着如果说有内部服务器错误,例如错误 500,则假定它不存在。
对于轮询方法,如果您有很多用户,任何间隔 都可以 过于频繁。
可扩展性的最佳选择是使用基于套接字的通信系统。正如您提到的,您正在使用 node.js。您可以考虑使用 socket.io。当你“上线”时,你可以向所有连接的客户端发出一个事件。