pjax 和 ajax 的区别

pjax 是一个 jQuery 插件,它经过 ajax 和 pushState 技术提供了极速的(无刷新 ajax 加载)浏览体验,而且保持了真实的地址、网页标题,浏览器的后退(前进)按钮也能够正常使用。
pjax 的工做原理是经过 ajax 从服务器端获取 HTML,在页面中用获取到的 HTML 替换指定容器元素中的内容。而后使用 pushState 技术更新浏览器地址栏中的当前地址。如下两点缘由决定了 pjax 会有更快的浏览体验:javascript

  • 不存在页面资源(js/css)的重复加载和应用;
  • 若是服务器端配置了 pjax,它能够只渲染页面局部内容,从而避免服务器渲染完整布局的额外开销。

从官网的这段描述中可看出 pjax 的核心其实仍是 ajax,因此若是是 ajax 去作这种局部 html 刷新的话须要写更多的代码,而 pjax 已经作的很好了。php

pjax 的使用方法:使用 pjax 通常须要后台配合,好比 java 后端能够写个过滤器过滤当前请求,若是包含 X-PJAX 请求头 (说明是 pjax 请求) 那么只须要返回局部 html 代码,剩下的交给前端 pjax 插件渲染就好,若是不包含则返回完整 html 代码(包含头尾的 html 代码,不包含 X-PJAX 说明是普通请求)css

使用 pjax 的好处:因为搜索引擎的蜘蛛不会执行 javascript,因此若是你的页面是 ajax 方式加载将不会被引擎收录,好比:html

<nav id="tab"> <a href="javascript:void(0);">简介</a> <a href="javascript:void(0);">动态</a> <a href="javascript:void(0);">礼包</a> <a href="javascript:void(0);">开服</a> <a href="javascript:void(0);">攻略</a> </nav> <div id="con"></div> <script> $("#tab a").click(function(){ //发起ajax请求 $.ajax({ url:"./introduction.html",//注意:这里实际状况应该是根据点击的不一样a标签加载不一样页面 success: function(html){ //将请求回来的内容添加到下面的内容div $("#con").append(html); } }); }); </script> 

除了主页会被收录,简介、动态、礼包…这几个页面将不会被收录,由于引擎蜘蛛爬取主页时会顺着 a 标签的 href 爬取另外一个页面,而不会执行 javascript。
若是使用 pjax,就能够解决这种问题(注意:这里为了使代码直观提供的是 ajax 的解决代码,并未使用 pjax,解决思路同样,使用 pjax 可使代码更简化),页面能够这样修改:前端

<nav id="tab"> <a href="./introduction.html">简介</a> <a href="./dynamic.html">动态</a> <a href="./gift.html">礼包</a> <a href="./service.html">开服</a> <a href="./strategy.html">攻略</a> </nav> <div id="con"></div> <script> $("#tab a").click(function(){ //发起ajax请求 $.ajax({ url: "./introduction.html",//注意:这里实际状况应该是根据点击的不一样a标签加载不一样页面 data: {key: 'ajax'}//注意:这是必须的参数标识 success: function(html){ //将请求回来的内容添加到下面的内容div $("#con").html(html); } }); return false; // 阻止 A 连接跳转 }); </script> 

后台代码能够这样处理,php 为例:java

$isAjax = $_GET["key"]; $con = include 'con.php'; if($isAjax == "ajax"){ echo $con; }else{ $head = include 'head.php'; $foot = include 'head.php'; echo $head + $con + $foot; } 

若是请求中的参数 key 的值是“ajax” 则只输出部份内容,不然则输出包含头部底部等完整内容。jquery

参考:pjax 中文文档ajax 如何作到 SEO 友好ajax

转载自:http://meia.fun/article/1540982577311后端

相关文章
相关标签/搜索