优化 Laravel 网站打开速度

1.关闭debug
打开.env文件,把debug设置为false.
APP_ENV=local
APP_DEBUG=false
APP_KEY=xxxxxxxxx

2.应当确保在你部署的过程中运行 route:cache Artisan 命令:
php artisan route:cache
此命令将为所有路由注册缩减到一个缓存文件中的单个方法调用,从而在注册数百个路由时提高了路由注册的性能。
注意:由于此功能使用 PHP 序列化,你仅能缓存专门使用基于控制器路由的应用程序路由。PHP 不能序列化闭包路由。

3.当你将应用程序部署到生产环境时,你应当确保在你部署过程中运行 config:cache Artisan 命令:
php artisan config:cache
此命令将所有 Laravel 的配置文件合并到一个缓存文件,这将极大地减少框架在加载配置值时必须对文件系统进行访问的次数。
注意:如果在你部署过程中执行 config:cache 命令,你应当确保你仅从你的配置文件中调用 env 函数。一旦配置被缓存,.env 文件将不被加载并且对 env 函数的所有调用将返回 null。

4.自动加载器改进
当你准备往生产环境部署应用时,确保你优化了你的 Composer 类的自动加载映射,这样可以使 Composer 可以很快的找到正确的加载文件去加载给定的类:
composer install --optimize-autoloader --no-dev

5.使用Laravel缓存
使用Laravel的Cache方法缓存内容,有文件缓存,数据库缓存,redis缓存,使用redis也可以用predis组件,也可以多种缓存方式结合。在Laravel中使用缓存就是这么优雅方便:
$lists = Cache::remember('travel.destination.lists', 20, function () {
    return $this->destination->getList();
});

6.使用CDN
本站用的是七牛CDN,每月送你20G流量和20G存储空间,具体多少不记得了,总之对于小站来说完全足够了。

7.使用PHP 7并开启OPcache
检查是否开启:
php -r "var_dump(function_exists('opcache_get_status'));"

8.nginx开启gzip压缩


这不仅仅是针对Laravel网站的性能优化方法,其中很多是通用的网站性能优化的方法,当然还有很多可以优化的地方。

可以把以上提到的优化命令写成一个脚本:
#!/usr/bin/env bash
php artisan clear-compiled
php artisan config:clear
php artisan event:clear
php artisan route:clear
php artisan view:clear
#php artisan cache:clear

#dump-autoload 输出在 bootstrap/cache 目录

composer install --optimize-autoloader --no-dev
composer dump-autoload -o
php artisan optimize
php artisan config:cache
php artisan event:cache
php artisan route:cache
php artisan view:cache

chmod -R 777 storage
chmod -R 777 bootstrap/cache
命名为 optimize.sh 放网站根目录,这样可以方便执行。

查看某个请求加载了多少个文件
借助 opcache 的统计功能,https://github.com/rlerdorf/opcache-status
安装后,首先将 php-fpm 重启,保证 opcache 是空的,然后向目标地址发送一次请求
浏览器打开 opcache-status, 例如 : http://localhost/opcache-status/opcache.php
可以看到,此次请求在 opcache 中缓存了多少个文件就是本次请求引入了哪些文件