首页 > 技术笔记 > php > Laravel 5 程序优化技巧
2016
10-27

Laravel 5 程序优化技巧

很多人都说Laravel运行性能太低,其实Laravel自带了很多优化的命令,以获得更好的性能。本文就介绍一些Laravel的技巧,不局限于这些自带的命令行哦。

一、PHP开启OpCache

这个应该是优化效果最明显的了,开启与不开启加载时间相差一倍。并且PHP 5.5 以后内建了 OpCache , 不需要单独去安装,只需要开启就可以了。OpCache 的加速原理是把编译后的 bytecode 存储在内存里面, 避免重复编译 PHP 所造成的资源浪费。 第一步:先加载OpCache扩展: 第二步: 进行OpCache的相关配置: 第三步: 重启服务器 设置了opcache.revalidate_freq之后会在指定周期更新PHP脚本,所以你可能修改了php文件内容,但是并不是立即生效的,但是又不能等那么长时间,如何更新呢?其实PHP有个函数opcache_reset(),运行这个就可以更新了。由于高版本的opcache_reset()函数不再支持在cli命令行内运行,因为放在网络脚本中运行更安全,因为可以判断用户的权限。

二、类映射加载优化

使用以下命令可以将常用加载类合并到一个编译文件里,以减少每个请求包含的文件数量。该文件保存在bootstrap/cache/compiled.php,如果文件存在的话会直接覆盖。 你也可以通过在config/compile.php来指定要包含的类。 运行上述命令,只有当环境是production时才会创建编译文件,其他环境如果想编译则需要添加–force标志。 php artisan optimize 也会创建bootstrap/cache/services.json来优化服务提供者的加载。 php artisan clear-compiled 可以通过删除bootstrap/cache/compiled.php 和 bootstrap/cache/services.json 来清除编译文件。

三、配置信息缓存

运行php artisan config:cache可以将你所有的配置信息合并到一个文件,来加快加载速度。缓存文件存储在bootstrap/cache/config.php 。该命令会清除旧的缓存并创建一个新的。 运行php artisan config:clear 会删除缓存文件bootstrap/cache/config.php。

四、路由缓存

php artisan route:cache 会创建一个路由缓存文件,来加快路由注册过程。缓存文件存储在bootstrap/cache/routes.php。命令会清除旧的缓存文件并创建一个新的。 php artisan route:clear 可以删除这个缓存文件。
需要注意的是,如果路由配置中使用了闭包,而不是使用Controller@action的形式,在缓存时可能会报错,导致缓存失败。

五、视图缓存

laravel会在框架第一次渲染视图文件时编译视图文件,并以MD5字符串命名,存储在storage/framework/views/文件夹下。 php artisan view:clear 命令可以清除这些编译的视图文件。

六、使用Redis/Memcached缓存软件

可以将会话的存储方式改为redis或者memcached,并将缓存驱动修改为redis或者memcached。具体参考laravel相关文档。

七、数据库请求优化

  • 数据关联模型读取时使用 延迟预加载 和 预加载 ;
  • 使用 Laravel Debugbar 查看每一个页面的总数据库请求数量,并想办法优化;
  • 其他数据库优化内容请自行查阅其他资料

八、前端资源合并

作为优化的标准,一个页面只应该加载一个 CSS 和 一个 JS 文件,并且文件要能方便走 CDN,需要文件名随着修改而变化。 Laravel Elixir 提供了一套简便实用的方案,详细请见文档:Laravel Elixir 文档。  

参考资料:

  1. 十个 Laravel 5 程序优化技巧 : https://laravel-china.org/topics/2020
  2. Laravel 5 optimization commands : http://sentinelstand.com/article/laravel-5-optimization-commands
  3. 使用 OpCache 提升 PHP 5.5+ 程序性能:https://laravel-china.org/topics/301
最后编辑:
作者:射雕天龙
转载请注明:转载自射雕天龙的博客(http://blog.wangjunfeng.com)
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!

留下一个回复

你的email不会被公开。