pjax是对ajax + pushState的封装,ajax大家应该都明白,就是使用xmlhttprequest对象与服务端进行交换数据,pushState是一个可以操作history的api。说白了,pjax也就是利用ajax从服务端取回数据,利用pushState更新当前的url,这样就支持了回退。其之所以有相当快的加载速度主要由以下两方面原因:
第一,页面不需要重新加载或是应用一些资源,如css、js等。
第二,服务器是依据ajax请求,返回部分页面,而不是整个页面。
jquery.pjax是一个实现了pjax效果的Jquery插件。其依赖于 jQuery 1.8 或是更高的版本。其支持NPM方式安装,当然出于简便考虑,你也可以直接引入对应的js文件。本文,我将通过bootCDN上面提供的jquery.pjax,版本是2.0.1,本地是通过phpstudy构建的PHP集成环境。
一、测试案例
测试文件有header.php、index.php、test.php,在index.php中点击a后,加载test.php中内容,在test.php中,判断若为pjax请求,返回部分页面内容,否则返回整个页面。每个文件内容分别如下:
header.php 存储页面公共页面
pjax加载
index.php 首页<?php
require "header.php";
?>
$(document.body).pjax("a", "#pjax-container", {timeout: 100