[TOC]
为何写这篇文章
现在laravel 在优化和性能的文档有些缺乏。这编文章,我将给出一点意见laravel是怎么工作的,和怎样提升其性能
PHP普通优化
首先,这个实用于正常普通的PHP环境,也适用于laravel。
- 1、PHP的内置函数会比手工编写效率要高
- 2、你的数据库结构会影响你的性能等等
使用composer管理优化
laravel使用自动懒加载类.这意味着它不会包含所有vendor目录下的所有文件,相反而是等待调用一个未被加载的类,然后对它可能所在的位置进行一些智能的猜测。
如果你使用的psr-4自动加载,它会检查文件Namespace/Namespace/Class.php你在composer.json 的PSR-4 目录定义,如果你使用的是ClassMap,它就很容易找出类的名称和加载对应的文件.
如果你添加了一个新的类到目录只会通过ClassMap被自动载入,这就是为什么,在你运行composer dump-autoload之前,会提示“class not found“错误.
psr-4是不错的发展,因为它可以让你添加一个类,自动加载器会立即发现它,只要你命名空间命名和文件命名是正确的。当然,在生产环境中,你通常不想浪费一小部分性能在psr-4自动加载上。你可以运行composer dump-autoload --optimize重新编译你所有的psr-4自动加载规则到规则的ClassMap(vendor/composer/autoload_classmap.php),它将会跑的更快。
##l aravel优化
当app/config/app.php文件下的debug 设置为false时候,当运行laravel artisan命令php artisan optimize,它会做两件事情:
- 运行composer命令
composer dump-autoload --optimize - bootstrap/compiled.php 文件。该文件包含了很多laravel框架中常用的类,和允许的框架文件,只是文件系统需要一个框架,即使是在分裂为许多现实学习的文件。
当debug设置为true的时候php artisan optimize命令只会运行第一步,而不会生成bootstrap/compiled.php 文件.他会自动检测你的debug配置.
另外,如果你不想改debug配置,但是也想生成bootstrap/compiled.php 文件,你可以在命令后面加上--force,php artisan optimize --force 强行生成
强力推荐每次更新文件后运行php artisan optimize,它可以大大的提高性能。考虑让它每次你部署自动完成(以防止问题,最好是在临时运行php artisan down后)。
你可以把特殊需要的类文件添加到app/config/compile.php中。文件需要引用相对与项目的跟目录,例如:
‘vendor/laravel/framework/src/Illuminate/Support/Collection.php’, ‘vendor/cartalyst/sentry/src/Cartalyst/Sentry/Sentry.php’, ‘app/library/HelperClass.php’,
通过像 loic-sharma/profiler这样的性能分析工具,发现它们被加载到你的请求中,和加到compiled.php数组中,这样做,请求响应时间几乎减半
总结
- 1、
app/config/app.phpdebug设置为false - 2、把特殊需要的类文件添加到
app/config/compile.php - 3、运行命令
php artisan optimize - 4、运行命令
php artisan config:cache - 5、运行命令
php artisan route:cache
—End—
迭代
- 2014年3月8日 19:09:17 初稿