【问题标题】:Laravel artisan optimize Best PracticesLaravel 工匠优化最佳实践
【发布时间】:2023-03-28 17:10:01
【问题描述】:

我正在尝试完全理解 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 相比,这样做有一些优势,例如不依赖额外的 3rd 方服务器来部署您的应用程序。但我从未听说有人这样做,所以我不敢称其为“最佳实践”。

标签: php laravel optimization laravel-5.1 laravel-artisan


【解决方案1】:

[编辑 - 正如@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

【讨论】:

  • composer install --no-interaction --no-dev 用于生产优化。
  • 提供比数百个小文件更好的性能。在使用 APC 时,您有任何证据或基准吗?我不清楚它为什么会有所帮助。跨度>
  • @Yehosef 只是个人经验;不过,这是一个微不足道的测试。只需在有和没有bootstrap\cache\compiled.php 的情况下为您的网站计时。请务必向我们提供您的新证据!我是基准测试的忠实拥护者——请参阅我的 Laravel 基准测试github.com/claar/laravel-benchmarks
  • 现在我们还可以添加php artisan config:cachephp artisan route:cache,但是它们必须在服务器上运行,因为配置值链接到绝对路径,因此如果您在您的服务器上生成配置缓存,它们将无法工作dev 机器,然后复制到生产服务器。
  • 不需要运行php artisan clear-compiled,因为php artisan optimize 会覆盖compiled.php。
【解决方案2】:

Laravel 5.5 开始,不再需要php artisan optimize

【讨论】:

  • php artisan optimize:clear 用于清除缓存仍然运行良好
【解决方案3】:

您还可以利用 laravel 包通过缓存页面部分来轻松优化您的应用程序

https://github.com/imanghafoori1/laravel-widgetize

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 2020-11-07
    • 1970-01-01
    • 2023-03-28
    • 2021-07-03
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多