【问题标题】:Why does adding an arbitrary GET variable speeds up a long-time-taking request?为什么添加任意 GET 变量会加快耗时请求?
【发布时间】:2012-10-14 18:49:51
【问题描述】:

有时,我请求一个页面,但收到请求的响应并加载该页面需要 时间(有时请求超时而我从未收到响应)。

但是,如果我打开一个新选项卡,复制确切的 URL,然后将其附加到任意 GET 变量(带有任意值),请求会非常快地得到响应(就像正常状态一样)并且然后页面加载,尽管没有那个任意的GET 变量,请求没有得到响应。

举个假的例子,如果我要求:

http://example.com/

加载可能需要很长时间,还没有收到任何响应,但如果我只是打开一个新标签(同时)并请求:

http://example.com/?foo=bar

加载起来就像魔术一样!

为什么会发生在我身上?我的浏览器和页面服务器之间的路径可能是什么原因?这与 ISP 服务器缓存有什么关系吗?

任何解释都非常非常感谢,因为我真的很想知道原因!

P.S:我在叙利亚(互联网网络中任何疯狂的事情都可能发生),这不仅发生在我身上,而且发生在我认识的所有人身上。

编辑:

请注意,即使 URL 已经有 GET 变量也会发生这种情况,例如,我有一个博客,有时请求此页面(我更改了域):

http://myblogdomain.com/wp-admin/admin.php?page=jetpack

花费的时间太长(有时会超时),但如果我打开一个新标签并请求:

http://myblogdomain.com/wp-admin/admin.php?page=jetpack&foo=bar

加载速度很快(正常)。

【问题讨论】:

  • 如果按其他顺序执行会怎样?
  • @SLaks:其他顺序是什么?如果你的意思是bar=foo,那就像我说的那样随意,任何事情都能完成!
  • 尝试使用 yslow 或 pagespeed 任何其他调试器分析延迟,看看延迟来源在哪里。
  • 你在用 Tor 之类的吗?
  • @M.H:不,实际上我使用 Tor 时不会出现问题(虽然响应和加载会变慢一些,但这是使用 Tor 浏览的正常速度)。

标签: caching networking get httprequest


【解决方案1】:

您与互联网的其余部分之间可能存在缓存代理和/或防火墙。代理中可能有一条规则说带有 GET 参数的 URL 可以通过,因为它们很可能返回唯一的内容,但是没有参数的 URL 必须通过缓存获取。缓存可能过载或损坏。

【讨论】:

    【解决方案2】:

    您可能有一个代理需要对每个域执行一次冗长的过程(内容检查、DNS 查找等)。

    当您打开第二个选项卡时,该长度过程已经开始(对于第一个选项卡),因此不会花费很长时间。

    如果是这种情况,使用查询字符串打开第一个选项卡而没有打开第二个选项卡仍然会导致第二个选项卡加载速度更快。

    【讨论】:

    • 我已经尝试过了,但它不起作用。只有添加一个新的GET 变量才能加快请求速度,在另一个选项卡中请求完全相同的 URL 只会导致它作为第一个选项卡等待,如果收到响应,那么通常两者都会同时收到响应。跨度>
    • 同一域上的不同 URL 但没有查询字符串怎么办?
    • 独立行动,即可能得到快速响应或面临同样的问题,只是独立。
    【解决方案3】:

    1-形成一个网络开发者的视角: 要了解有关这段时间的更多详细信息,我可以查看我最好的朋友(萤火虫)的网络标签

    正如您在上面看到的,我可以看到页面上每个步骤花费了多少时间。

    2-尽管我认为这个问题应该转移到https://serverfault.com/ 以获得来自网络极客的答案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 2015-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 2020-03-24
      相关资源
      最近更新 更多