Pjax介绍及在asp.net MVC3中使用pjax的简单示例

      相信不少人对ajax并不陌生,对ajax的一些优势也了如指掌,如:局部刷新改善用户体验,减小开销,让服务器和浏览器之间的响应更快等。javascript

      可是它的缺点也是很显而易见的:html

  1. AJAX大量的使用了javascript和ajax引擎,这些取决于浏览器的支持.在编写的时候考虑对浏览器的兼容性.
  2. AJAX只是局部刷新,因此页面的后退按钮是没有用的.
  3. 对流媒体还有移动设备的支持不是太好
  4. 因为AJAX只是局部刷新,所以对搜索引擎不友好,不利于搜索引擎优化(SEO)。

      然而如今部分网站(http://plus.google.comhttp://www.github.com/) 都支持这样的一种浏览方式:当你点击一个站内的连接的时候, 不是作页面跳转, 而是只是站内页面刷新。 这样的用户体验,  比起整个页面都闪一下来讲, 好不少。 其中有一个很重要的组成部分, 这些网站的ajax刷新是支持浏览器历史的, 刷新页面的同时,  浏览器地址栏位上面的地址也是会更改, 用浏览器的回退功能也可以回退到上一个页面。 那么若是咱们想要实现这样的功能, 咱们如何作呢? html5

什么是pjax

      在HTML5以前的版本,DOM中的window对象经过window.history方法提供了对浏览器历史记录的读取,让你能够在用户的访问记录中前进和后退。java

      从HTML5开始,咱们能够开始操做这个历史记录堆栈。HTML5的history提供了两个新特性pushState和replaceState经过这两个方法咱们能够对history实体进行添加和修改,从而能够在不刷新页面的前提下添加和修改history以实现浏览器的前进和后退。jquery

      pjax即pushState+ajax,页面之间的点击是经过ajax异步请求的,同时对于整个页面来讲URL地址却发生了变化,然而页面却并无刷新,而且能够支持浏览器的前进和后退。git

 

      关于pjax的用法能够参考https://github.com/defunkt/jquery-pjax上的说明,我这里写了一个简单地例子,能够看到使用pjax和不使用pjax浏览器地址和请求数的变化。github

      这里写了几个关于<a>导航的请求。ajax

      下面是首页:浏览器

当使用pjax时,它的连接和请求以下:服务器

 

不使用pjax时,它的连接和请求以下:

      咱们能够看到,虽然地址是同样的,可是pjax的请求数明显少于常规方法。

      固然,关于html5的新特性,只能在支持html5的浏览器中使用,在不支持html5的浏览器中,仍是会使用常规的方法。

      点击在这里下载Demo

相关文章
相关标签/搜索