【问题标题】:Can a server force browser to wait without changing webpage code?服务器可以在不更改网页代码的情况下强制浏览器等待吗?
【发布时间】:2012-05-18 03:03:21
【问题描述】:

我有一个后端服务器来处理来自多个不同网站的请求。这意味着许多网站会向我的服务器询问他们提供给用户浏览器的信息。

这些网站有自己的代码和自己的服务器,我无法控制。我必须更改我的后端代码,这将导致最多 5 分钟的延迟将数据返回到他们的服务器以呈现给他们的客户端 Web 浏览器。

由于我无法更改所有客户端的网站,我的后端服务器是否可以强制客户端浏览器在他们在浏览器上按下提交后等待而不超时?

有什么东西我可以返回给客户端服务器,他们可以传递给他们的客户端浏览器,这样它就会一直等待,并且当我忙于处理而没有从他们的网站得到回复时不会放弃数据?

现在我使用 php,但我可以使用任何可以解决问题的语言。

我绝望了!

谢谢 粗!

【问题讨论】:

  • “我很绝望!” ...当您未能接受前 4 个问题的 10 个答案中的任何一个时,您是否也很绝望?请在适当的情况下接受对您问题的回答,以免人们无视您的呼救声。
  • 我认为您需要与您的网站客户交谈,看看是否可以接受额外的五分钟处理...
  • 五分钟?天哪,它在做什么?
  • “最多延迟 5 分钟”???您是否将数据“发送到月球并返回”?首先,我会在您的后端解决问题并将延迟减少到几秒钟......

标签: php javascript html ajax perl


【解决方案1】:

大多数浏览器会无限期地等待(或至少等待很长的时间)等待服务器响应请求,前提是已成功连接到服务器,并且请求会到达服务器。

不过我不推荐这条路线。虽然浏览器会等待,但用户可能不会。我建议在后台做你的工作,更新数据库中的工作状态或其他东西。在客户端,您可以通过 AJAX 定期轮询更新,然后在工作完成后根据需要重定向用户。

【讨论】:

  • 这正是。如果我的用户看不到“正在工作”的浏览器或网站,他们不会等待很长时间。一个简单的“加载”式屏幕应该绰绰有余。
【解决方案2】:

您最好的操作方法是确保服务器不会使您的 php 执行超时,确保设置 php 脚本允许的执行时间以及您的 http 守护程序的所有其他适用的超时设置以及 php 超时设置。

至于客户端超时,这里没有什么可以做的,客户端决定他们什么时候已经足够了,然后断开连接。如果可以的话,您可以做的一个技巧是在最终结果的过程中输出一些东西,只要输出不断通过,通常客户端不会超时。这可能意味着在您准备好最终计算之前输出周期。

如果您真的无法控制客户端代码,那么您能做的最好的事情就是尝试让您的一方更快。如果可以缓存数据,预先计算结果等

【讨论】:

    【解决方案3】:

    将耗时的进程分叉到后台。让他们将他们的(部分)输出数据传送到会话存储中。定期将主页重定向到自身,从会话存储中读取内容。

    完整程序请参见Watching long processes through CGI

    【讨论】:

      猜你喜欢
      • 2013-07-27
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多