在Laravel应用中如何使用pjax进行页面加速

发布时间 - 2021-06-23 00:00:00    点击率:

说明:phphub 使用 pjax 来加速网页的加载, 这篇文章是在开发完此功能后做的笔记.

相关推荐:《laravel教程》

什么是 Pjax

        .--.
       /    \
      ## a  a
      (   '._)
       |'-- |
     _.\___/_   ___pjax___
   ."\> \Y/|<'.  '._.-'
  /  \ \_\/ /  '-' /
  | --'\_/|/ |   _/
  |___.-' |  |`'`
    |     |  |
    |    / './
   /__./` | |
      \   | |
       \  | |
       ;  | |
       /  | |
 jgs  |___\_.\_
      `-"--'---'

项目地址见 这里, 官方的介绍:

pushState + ajax = pjax

详细的解释请看 知乎上的这个问题, 或者自己去查阅资料.

简单点描述, 就是利用 ajax 技术去服务器获取文档, 在不刷新浏览器页面的情况下, 更新当前页面, 并且能保证页面的js 和 css 等 assets 文件不会被重复加载, 然后利用浏览器提供的 pushState 功能, 对 URL 进行更新, 并能保证用户通过点击 back 按钮回溯到历史页面.

注意: 并不是所有浏览器都支持 pushState, 关于浏览器的兼容请见这里, 当浏览器不兼容的时候, 会自动使用原始的浏览方式进行访问.

为什么要使用 Pjax

因为不需要整个页面刷新, 并且 assets 文件都不需要重新加载, 很大程度上提高了页面的加载速度.

服务端安装 rcrowe/Turbo

使用 package rcrowe/Turbo .

安装 rcrowe/Turbo#

在 composer.json 里的 require 属性下添加:

"rcrowe/turbo": "0.2.*"

然后 composer update 或者 composer install

配置 Providers#

编辑 app/config/app.php 文件, 在选项 providers 数组里面添加:

"Turbo\Provider\Laravel\TurboServiceProvider",

下载 pjax.js

在 public\js 文件夹下

wget https://raw.github.com/defunkt/jquery-pjax/master/jquery.pjax.js

然后在模版里面加载此文件

最后页面里调用:

$(document).ready(function(){    $(document).pjax('a', 'body');});

上面的代码解释是, 把所有的 a 标签的点击事件截获, 如果当前浏览器支持 pjax 的话, 发送一个 ajax 请求, 并把参数_pjax=body 带过去.

如果一起顺利的话, 在 Chrome 的 debuger 里能看到类似于这样的请求:

至此, 已经顺利配置完毕.

添加加载动画#

接下来要来添加一个页面加载的动画, 效果如下:

添加 nprogress#

使用 rstacruz/nprogress 来实现.

添加的方法是 下载 文件, 然后把 nprogress.js 和 nprogress.css 添加到页面中:

        

调用#

修改上面的代码, 修改后的代码如以下:

$(document).ready(function(){    $(document).pjax('a', 'body');    $(document).on('pjax:start', function() {
      NProgress.start();  });  $(document).on('pjax:end', function() {
      NProgress.done();
      self.siteBootUp();  });});

这样的话, 每一次点击页面的时候就会有很酷炫的效果了


# laravel  # php  # composer  # json  # css  # ajax  # chrome  # require  # public  # JS  # 事件  # 加载  # 要使  # 服务端  # 是在  # 都不  # 不需要  # 这个问题  # 这篇文章  # 要来  # 并能 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 怎么用AI帮你设计一套个性化的手机App图标?  如何批量查询域名的建站时间记录?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何快速搭建高效香港服务器网站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  手机网站制作与建设方案,手机网站如何建设?  Swift中循环语句中的转移语句 break 和 continue  历史网站制作软件,华为如何找回被删除的网站?  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  如何在腾讯云服务器快速搭建个人网站?  如何在建站之星网店版论坛获取技术支持?  Laravel distinct去重查询_Laravel Eloquent去重方法  免费网站制作appp,免费制作app哪个平台好?  香港服务器如何优化才能显著提升网站加载速度?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  Python文件操作最佳实践_稳定性说明【指导】  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  佛山企业网站制作公司有哪些,沟通100网上服务官网?  南京网站制作费用,南京远驱官方网站?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  高端企业智能建站程序:SEO优化与响应式模板定制开发  在centOS 7安装mysql 5.7的详细教程  网站制作企业,网站的banner和导航栏是指什么?  个人网站制作流程图片大全,个人网站如何注销?  如何挑选高效建站主机与优质域名?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  如何在搬瓦工VPS快速搭建网站?  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  如何用西部建站助手快速创建专业网站?  如何在云服务器上快速搭建个人网站?  JavaScript Ajax实现异步通信  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  三星网站视频制作教程下载,三星w23网页如何全屏?  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  Laravel用户密码怎么加密_Laravel Hash门面使用教程  新三国志曹操传主线渭水交兵攻略  Linux系统命令中tree命令详解  C#如何调用原生C++ COM对象详解  如何快速打造个性化非模板自助建站?  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  如何快速生成高效建站系统源代码?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  如何快速重置建站主机并恢复默认配置?  深圳网站制作平台,深圳市做网站好的公司有哪些?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  做企业网站制作流程,企业网站制作基本流程有哪些?