在 2011 年 rails 大会上面,DHH 也提到了 pjax, 并且也提出了疑问,为什么大家不去用。
这里我做了一个简单的技术分析,推荐大家采用 pjax。我也觉得 ruby 社区应该多一点技术分享,让这个社区带来更多的价值。
必须反对你说的两点好处啊。
用户体验是下降而不是提升。首先,慢就是慢,不可能因为你换个呈现方式原来不能容忍的就能容忍了。其次,违背传统使用习惯。所以还是尽量限制在只有点击显示更多之类的地方使用。另外,客户端的开销可能增大了不少,毕竟现在改用 JavaScript 去更新页面了。
减少没多少带宽消耗和服务器消耗。css/js 之类的静态文件在第一次访问后就缓存在浏览器里了。
印象中 pjax 不会减少后台负担。服务器还是要重新生成页面。所以 pjax 只是假象,它做到的就只是用 javascript 重新装载要刷新的部分。没有实际用途。
to @bhuztez
理由我博客里面都写清楚了。希望能够解决你的疑问。
部分不再渲染的内容,基本都是可以直接扔到 memcache 里的内容。
CSS/JS 不会产生 HTTP HEAD 请求,因为 Expire 直接设置成无限了。直接就在浏览器缓存里了。
试用过,觉得很不错,而且 form 的提交也可以 pjax,在 js 和 css 文件比较多的情况下,客户端相应会快很多,适合 modern browsers.
通过 AJAX 刷新页面最大的好处是减少页面渲染的时间,比如网站用到了 jQuery,如果切换页面,那么每次打开新页面时,浏览器都必须重新解析和执行 jQuery 代码,而通过 AJAX 刷新可以避免这点。
Pajx 我觉得用来做产品原型不错,但实际用于产品还是太粗糙了。比如加载页面时不切换 title,这不论是对 seo 还是对微博分享都是很不友好的。
@linjunhalida 楼主的链接貌似已经 404 了啊
个人感觉 pjax 是个不错的东东
vs full reload
vs Ajax
但貌似灵活性不如 Ajax,所以它用于一般的页面渲染还不错
上面是使用 gem pjax_rails 得到的结论
感觉还是有很多局限,不是一个完整的解决方案。 只是一个比较快速的方法,我想叫它,偷懒的 ajax :)
其实 现在做 ajax 已经很简单了,似乎它的意义也变小了。