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

相關文章
相關標籤/搜索