当流量增加时,将一定比例的访问者重定向到另一个页面
Redirect certain percentage of visitors to another page when traffic ramps up
我的任务是创建一个脚本,可以在高峰时段将我们网站流量的 10%、20%、50% 等重定向到"技术困难"页面,指示访问者稍后再回来,以减轻我们申请人的负担。
我们的申请人在申请之前都会通过一个中央登录页面进行漏斗,对于这个例子,假设它是"www.example.com/index.php"。所以问题是,是否有可能创建一个脚本,在这些高流量时期,我们可以进入并让它每 5、10、20 个访问者重定向到"www.example.com/down.php"?
我们选择重定向这些人不是由于服务器负载,而是因为我们每月只能拥有有限数量的申请人。这将创造几天的时间,我们基本上可以减少我们的申请人,这样我们就不会超过这个门槛。
我知道如何将所有访问者完全重定向到一个网站,但在这种情况下是行不通的。我已经在这个网站上浏览了几个类似的问题,虽然仍然很有帮助,但我无法弄清楚如何正确处理这样的情况。
我感谢你能给我的任何和所有帮助,和/或只是朝着正确的方向前进。
我建议研究其他解决方案,因为这不是对待访问者的好方法,但如果您真的想这样做,请使用:
$rand = mt_rand(1, 10);
if ($rand <= 3) { // In this case, 30% of your visitors get redirected.
// redirect
// normal page
据推测,能够访问您网站的用户可以访问多个页面,因此您必须执行一些操作,以便在用户被授予访问该站点的权限时,他们将被记住。为此,我将使用会话。因此,当用户访问网站并且不存在会话cookie时,只需执行以下操作:
if (rand(0,100) > 30) {
// Set cookie
}
else {
// so sorry. site is down for you
// redirect
}
但是,问题是,您究竟希望如何处理那些无法访问该网站的人?因为他们所要做的就是刷新页面,并且在 70% 的时间内,他们将被授予访问权限。如果您希望它是永久性的,则必须找到某种方法将它们列入黑名单。您可以在 cookie 中执行此操作,但随后用户可以轻松删除它并重试。使其持久化的唯一方法是将其 IP 地址存储在数据库中。这就引出了第三个问题,共享IP呢?也许您可以先检查会话,然后如果找不到,请检查数据库中列入黑名单的 IP。这样,用户绕过它的唯一方法是拥有动态 IP 或使用代理。
这实际上取决于情况:
-
如果服务器对负载完全没有问题,您的实际目标是限制每天的应用程序,然后可以解决这个问题使用 PHP 脚本。与其重定向到错误页面,我建议告诉访问者有关限制的真相。这样,访问者就不会多次点击 [F5],希望它会在几秒钟后工作,因为这会进一步增加服务器负载。我还建议设置一个真正的限制,而不是重定向每个第 n 个用户。
-
如果服务器在处理重负载时遇到问题,它甚至可能不会能够重定向所有请求。在这种情况下,您必须扩展您的能够处理负载的服务器。可能的解决方案:使用负载均衡器将流量路由到不同的服务器;升级您的服务器;优化您的代码(以便服务器可以在不扩展硬件的情况下承担负载)
-
如果您只决定设置每天的申请限制,因为服务器无法处理负载,请再次扩展服务器是最好的解决方案。
- 通过javascript重定向html传递php变量
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 使用angular重定向到html页面
- 如何在chrome扩展中重定向到html页面
- 无法从jquery Mobile导航栏重定向到另一个页面
- ng视图外的链接重定向到ng视图内的页面
- 在phonegap应用程序内部重定向不起作用
- CORS-重定向到第二个GET正在接收的页面
- 在两次java定时器循环后重定向访问者
- 将我的IE访问者重定向到其他页面
- 当流量增加时,将一定比例的访问者重定向到另一个页面
- 我正在尝试制作一个nocatsplash页面 - 它使用HTML代码来检查密码并在输入正确的密码时重定向访问者
- 检测重定向访问者
- 重定向未刷新或点击任何内容的实时网站访问者
- 如何使用js重定向访问者
- 用重定向传递唯一的访问者值
- 我如何检测访问者的国家并将他/她重定向到特定的网站?
- 使用各种方法将访问者重定向到网站的不同区域
- 根据访问者 IP 进行 jquery 代码重定向页面
- 如何在javascript倒计时结束后将网站访问者重定向到另一个url