Laravel艺术家优化最佳实践

31

我试图全面理解Laravel(5.1)的artisan optimize命令及其最佳实践,但文档似乎缺乏相关信息。由于生产服务器上没有安装Composer,所以我特别想知道在开发中运行artisan optimize --force时会修改或创建哪些文件,这些文件必须被推送到生产环境,以避免生产环境出现问题!运行命令后,我看到以下文件已被修改:

\bootstrap\cache\compiled.php
\vendor\composer\ - the entire directory
\vendor\autoload.php

我是不是想太多了,还是直接将这些文件推到生产环境中,然后就可以了?此外,关于何时运行artisan optimize的最佳实践是什么?每次创建新模型时都要运行吗?那控制器、路由和辅助类呢?

最后,我看到\bootstrap\cache\compiled.php文件有548KB,近17K行!这真的被认为是最优的吗?


您确实可以简单地将 compiled.php 和 vendor 文件夹推送到生产环境以进行部署。 实际上,这样做与使用 composer / artisan 相比具有一些优点,例如不依赖于其他第三方服务器来部署应用程序。 但我从未听说过有人以这种方式进行部署,因此我不敢称之为“最佳实践”。 - Ben Claar
3个回答

31

[编辑 - 正如 @crishoj 所说,自 Laravel 5.5 起,不再需要运行 php artisan optimize]

普通的 Laravel 实践是在生产服务器上安装 composer。

这些是 Envoyer(由 Laravel 的创始人创建)在生产环境部署应用程序时采取的步骤 - 我已经在下面进行了注释:

# Install application dependencies, such as the Laravel framework itself.
#
# If you run composer update in development and commit the `composer.lock`
# file to your repository, then `composer install` will install the exact
# same versions in production.
composer install --no-interaction

# Clear the old boostrap/cache/compiled.php
php artisan clear-compiled

# Recreate boostrap/cache/compiled.php
php artisan optimize

# Migrate any database changes
php artisan migrate

10
为在生产环境中进行优化,运行 composer install --no-interaction --no-dev 命令。不需要交互式操作并且不需要安装开发环境依赖。 - suncoastkid
1
@Ben - 目前我不使用Laravel - 如果你在使用,能否尝试一下基准测试?正如你所说,这应该是一个简单的运行,并且它将有助于验证你的说法。我之所以问是因为我曾经在另一个代码库上尝试过类似的优化,但没有看到任何好处。 - Yehosef
1
@Yehosef 好吧,你说得对。运行一个简单的 ab -n 500 http://app.vagrant 基准测试4次,两次使用和不使用 compiled.php,所有4次运行时间都在1秒以内。我已经从答案中删除了这个声明。https://gist.github.com/claar/6ea72454477fc1afb7c8 - Ben Claar
4
现在我们还可以添加php artisan config:cachephp artisan route:cache,但它们必须在服务器上运行,因为配置值与绝对路径相关联,如果您在开发机器上生成配置缓存,然后将其复制到生产服务器上,它们就不起作用了。 - JustAMartin
4
运行 php artisan clear-compiled 不是必要的,因为 php artisan optimize 会覆盖 compiled.php。 - Arian Acosta
显示剩余7条评论

23

Laravel 5.5起,不再需要运行php artisan optimize命令。


6
php artisan optimize:clear 用于清除缓存,目前仍然正常工作。 - Raskul
我经常使用它来清除缓存。这个命令做了它应该做的事情。 - Tim Bogdanov

1

不错的包!我在多个项目中使用过它,对于优化页面速度非常有效。 - Ali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接