【问题标题】:How does Facebook handle requests between Home page and Profile pageFacebook 如何处理主页和个人资料页面之间的请求
【发布时间】:2016-06-06 17:21:10
【问题描述】:

我只是想知道 facebook 如何管理对“我的个人资料页面”和“主页”以及其他一些似乎只是重新加载一些内容的页面的请求。

例如,当我在 facebook 上的“我的个人资料页面”上时,我点击主页按钮,顶部栏按钮和右侧的聊天面板保持不变(它们不会重新加载)。我在 webkit 控制台中监控了 XMLHTTPRequest 并且没有生成 ajax,所以它不是 Ajax(我认为)。否则,如果单击这些链接时生成了 FULL http 请求,我认为必须重新加载整个页面,对吗?所以我不知道这是如何处理的。请帮帮我好吗?

谢谢:)

【问题讨论】:

  • 好的,谢谢,它的html5??你能告诉我在那种情况下使用了哪个功能吗?谢谢...
  • 谢谢我已经阅读了它,它很有趣,我不知道html5历史api......但是我还是有点困惑。我已经阅读了狗的历史示例diveintohtml5.info/examples/history/adagio.html,它使用 ajax 来刷新图片。在我的个人资料和主页之间切换时,Facebook 不使用 ajax。我仍然不明白这些链接是如何工作的。请求之间不会刷新顶部栏和聊天。还有一些奇怪的原因在谷歌浏览器控制台中,在网络选项卡中,请求没有被刷新,当一个完整的 http 请求发出时,请求被刷新。
  • 它执行 ajax 请求。我刚刚检查了一下,我看到了那些请求(那些在他们的 URL 中带有 ?ajaxpipe=1&... 的请求

标签: ajax facebook


【解决方案1】:

这是一种称为“quickling”的性能优化,他们还使用“pagecache”策略来减少来自服务器的数据。在底层,它依赖于 javascript 作为 LinkController 执行,它委托一个超链接点击事件,然后发送一个 ajax(或使用 iframe)向服务器请求 pagelet 数据,响应将是一个 json 格式的数据结构, 然后 javascript 将插入当前页面的内容。你地址栏的uri可以处理老浏览器的hash变化事件和H5的History API(pushState)来管理浏览器的历史记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 2014-10-09
    相关资源
    最近更新 更多