zoukankan      html  css  js  c++  java
  • 优化网站设计(十六):为AJAX请求使用GET方法

    前言

    网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议。这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题。

    作为通用的原则,雅虎的工程师团队曾经给出过35个最佳实践。这个列表请参考  Best Practices for Speeding Up Your Web Site http://developer.yahoo.com/performance/rules.html,同时,他们还发布了一个相应的测试工具Yslow http://developer.yahoo.com/yslow/

    我强烈推荐所有的网站开发人员都应该学习这些最佳实践,并结合自己的实际项目情况进行应用。 接下来的一段时间,我将结合ASP.NET这个开发平台,针对这些原则,通过一个系列文章的形式,做些讲解和演绎,以帮助大家更好地理解这些原则,并且更好地使用他们。

    准备工作

    为了跟随我进行后续的学习,你需要准备如下的开发环境和工具

    1. Google Chrome 或者firefox ,并且安装 Yslow这个扩展组件.请注意,这个组件是雅虎提供的,但目前没有针对IE的版本。
      1. https://chrome.google.com/webstore/detail/yslow/ninejjcohidippngpapiilnmkgllmakh
      2. https://addons.mozilla.org/en-US/firefox/addon/yslow/
      3. 你应该对这些浏览器的开发人员工具有所了解,你可以通过按下F12键调出这个工具。
    2. Visaul Studio 2010 SP1 或更高版本,推荐使用Visual Studio 2012
      1. http://www.microsoft.com/visualstudio/eng/downloads
    3. 你需要对ASP.NET的开发基本流程和核心技术有相当的了解,本系列文章很难对基础知识做普及。

    本文要讨论的话题

    这一篇我和大家讨论的是第十六条原则:Use GET for Ajax Requests (为AJAX请求使用GET方法)

    我在之前的一篇文章中讨论到了AJAX (优化网站设计(十四):使AJAX调用尽可能利用缓存特性) , 在那篇文章中,我们探讨到了POST和GET这两种方式,对于AJAX利用缓存特性而言,是有不同的。

    1. POST请求,不能使用客户端缓存
    2. GET请求,可以使用客户端缓存(而且只要地址一样,它总是会使用客户端缓存)

    从这个意义上说,使用GET会比POST而言,有更好的一个性能表现。(因为减少了请求数和数据的重复传输)。

    与此同时,这条原则也提到另外一个有价值的信息:

    when using XMLHttpRequest, POST is implemented in the browsers as a two-step process: sending the headers first, then sending data. So it's best to use GET, which only takes one TCP packet to send (unless you have a lot of cookies).

    在使用XMLHttpRequest(目前的AJAX都是基于它实现的)的时候,如果Method是POST,则浏览器实际上会有两个步骤,先发送头部信息,然后再发送数据(这个由于是浏览器行为,目前我这边也没有办法提供验证的方式)。但如果是使用GET的话,则只有一个TCP的包发送出去(除非有大量的Cookie),这样无疑可以提高性能。

    【备注】一个TCP包的尺寸大约为1452字节。

    当然,现实的项目中,并不是总能使用GET的,例如长度方面可能会有限制:

    The maximum URL length in IE is 2K, so if you send more than 2K data you might not be able to use GET.

    如果使用GET,还需要考虑版本更新的问题。这个在优化网站设计(十四):使AJAX调用尽可能利用缓存特性 中我已经提到过了。

    实际上,除了POST,GET之外,HTTP协议还定义了其他一些方法(method),它们中的某一些还特别有用,有兴趣的朋友可以参考 http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

  • 相关阅读:
    四则运算测试脚本运行情况
    AAA
    (2015秋) 软工作业成绩公布(12月26号更新)
    判断闰年的Java算法
    B
    A
    Where Amazing Happens
    安利一发资料站
    C
    B
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/3073891.html
Copyright © 2011-2022 走看看