【问题标题】:Getting content: AJAX vs. "Regular" HTTP call获取内容:AJAX 与“常规”HTTP 调用
【发布时间】:2010-12-23 08:29:27
【问题描述】:
我喜欢这样并即时替换部分 DOM。

我的问题是:当您可以选择使用哪种方法时,您如何决定使用哪种方法?

在“过去”中,如果我们想要显示更新的内容,我们必须重新绘制整个页面(包括未更改的部分)。现在 AJAX 已经成熟了,我们不再需要这样做了;可以想象,我们可以渲染一次“页面”,然后根据需要更新变化的部分。但这样做的后果是什么?对于通过 AJAX 进行全页重新加载和部分页面重新加载,是否有一个好的经验法则?

【问题讨论】:

    标签: ajax http web-applications


    【解决方案1】:

    我的简单规则:

    做所有的ajax,特别是如果这是一个应用程序,而不仅仅是内容页面。 除非人们可能想要链接到直接内容,例如在博客中。然后更容易做常规的整页。

    当然有很多混搭组合,不一定非得是其中之一。

    【讨论】:

    • 10 年后,AJAX/fetch 请求更加复杂,我认为您的评论仍然正确。我默认使用 AJAX/Fetch 的主要原因是为了避免“POST 刷新”问题,而无需实现 POST/redirect/GET 模式。
    【解决方案2】:

    相当多的开发开销用于使用 AJAX 重新加载部分页面。您需要为所有返回的数据创建额外的 javascript 处理程序。如果您要返回完整的 HTML 块,您仍然需要指定内容的去向以及是否要替换其他内容。您可能必须重新呈现标题标签以反映内容更改,并且您必须实施历史解决方案以确保搜索引擎可以索引每个页面(例如,使用 SWFAddress jQuery 插件)。如果您返回 JSON 编码数据,则需要额外的处理步骤。

    不使用页面刷新来减少带宽使用的权衡被 JS 代码和事件绑定的增加所抵消,这可能会影响页面呈现速度和视觉效果。

    这完全取决于您的目标受众以及您试图在页面上寻求的整体感觉。 AJAX 和预加载器是华而不实的,人们喜欢华而不实的东西。如果您相信通过添加部分页面加载来改善最终用户体验,请务必实施它们。

    【讨论】:

      【解决方案3】:

      如果您希望人们能够为各个页面添加书签,请使用 HTTP 请求。

      如果您要更改上下文,请使用 HTTP 请求。

      如果您为了更好的可维护性而在不同页面之间划分功能,请使用 HTTP 请求。

      如果您想最大化页面浏览量,请使用 HTTP 请求。

      仍然使用 HTTP 请求的很多充分理由 - 堆栈溢出是 AJAX 和 HTTP 请求之间划分的一个很好的例子。弄清楚为什么每个函数都是 HTTP 或 AJAX,我相信你会得到更多的理由来使用它们。

      【讨论】:

      • 我对这个讨论很感兴趣。但是有一点我不明白:“改变上下文”是什么意思?
      • 在这种情况下更改上下文将类似于: 我正在查看我的支票账户信息 现在我正在更改上下文以查看抵押贷款利率。我还没有离开银行网站,但我的任务发生了变化:我已经改变了环境。
      猜你喜欢
      • 2014-10-20
      • 2012-09-22
      • 1970-01-01
      • 2014-01-05
      • 2014-01-06
      • 1970-01-01
      • 2016-03-25
      • 2013-11-22
      • 1970-01-01
      相关资源
      最近更新 更多