pjax学习

我们可以利用ajax进行无刷新改变文档内容,但是没办法去修改URL。
PJAX可以在改变页面内容的同时也改变他的URL。
一方面方便前进、后退。另一方面方便搜索引擎爬取。
与ajax相比实现技术上没什么新东西,但是概念上还是有所不同的。

PJAX的基本思路是,用户点击一个链接,通过ajax更新页面变化的部分,然后使用HTML5的pushState修改浏览器的URL地址,这样有效地避免了整个页面的重新加载。如果浏览器不支持history的两个新API或者JS被禁用了,那这个链接就只能跳转并重新刷新整个页面了。

和传统的ajax设计稍微不同,ajax通常是从后台获取JSON数据,然后由前端解析渲染,
而PJAX请求的是一个在服务器上生成好的HTML碎片,并改变了URL。

pjax结合pushState和ajax技术, 不需要重新加载整个页面就能从服务器加载Html到你当前页面,这个ajax请求会有永久链接、title并支持浏览器的回退/前进按钮。

优点:
·减轻服务端压力:按需请求,每次只需加载页面的部分内容,而不用重复加载一些公共的资源文件和不变的页面结构,大大减小了数据请求量,以减轻对服务器的带宽和性能压力,还大大提升了页面的加载速度。
·优化页面跳转体验:常规页面跳转需要重新加载画面上的内容,会有明显的闪烁,而且往往和跳转前的页面没有连贯性,用户体验不是很好。使用pjax后,由于只刷新部分页面,切换效果更加流畅,而且可以定制过度动画,在等待页面加载的时候体验就比较舒服了。

缺点:
不支持一些低版本的浏览器(如IE系列)
使服务端处理变得复杂

综合来看,pajx的优点很强势,缺点也几乎可以忽略,还是非常值得推荐的,尤其是类似博客这种大部分情况下只有主体内容变化的网站。关键它使用简单、学习成本小,即时全站只有极个别页面能用得到,尝试下没什么损失。

$.pjax({url: '/monitor/add', container: '#pjax-container'});
访问url,返回页面显示在container。

参考:
https://www.cnblogs.com/hustskyking/p/history-api-in-html5.html
https://www.jianshu.com/p/557cad38e7dd

你可能感兴趣的:(pjax学习)