ホームページ >PHPフレームワーク >Laravel >PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう

PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう

青灯夜游
青灯夜游転載
2022-09-23 19:52:152131ブラウズ

PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう にはたくさんの機能があります。しかし、速いことはその中にはありません。処理を高速化するための最適化のヒントを学びましょう。

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう の誕生以来、彼女の影響を受けなかった PHP 開発者はいません。彼らは、PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう が提供する迅速な開発を好むジュニアまたは中レベルの開発者、または市場の圧力により PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を学ぶことを余儀なくされた上級開発者です。

いずれにせよ、PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう が PHP エコシステムを活性化したことは否定できません (PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう がなかったら、私はとっくに PHP の世界から離れていたと確信しています)。

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう のレビューからの抜粋

ただし、PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう は物事を簡単にするために全力を尽くしているため、それは多くの作業を行うことを意味します。内部的には、開発者が快適なプログラミング体験を確実にできるようにするためのものです。 PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう の一見「魔法の」機能はすべて、機能が実行されるたびに開始する必要があるコードの層を重ねています。単純な例外であっても、一番下までドリルダウンします (エラーから始まり、カーネルに至るまで):

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう

ビューでコンパイル エラーのように見えるものについては、 、トレースする必要がある関数呼び出しは 18 個あります。私は個人的に 40 個を見つけましたが、他のライブラリやプラグインを使用している場合はさらに多くなるでしょう。

重要なのは、デフォルトでは、このような入れ子になったコードの層によって PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう が非常に遅くなるということです。

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう はどれくらい遅いですか?

正直に言うと、いくつかの理由により、この質問に答えるのは不可能です。

まず第一に、 現時点では、ネットワーク アプリケーションの速度を測定するための、客観的かつ合理的な基準が認識されていません。何と比べて速いのか遅いのか?どのような条件で?

2 つ目 、Web アプリケーションは多くのもの (データベース、ファイル システム、ネットワーク、キャッシュなど) に依存しているため、速度について話すのは愚かです。非常に高速な Web アプリケーションは、非常に低速なデータベースを備えている場合、非常に低速な Web アプリケーションになります。

しかし、この不確実性こそが、ベンチマークが非常に人気がある理由です。これらは意味をなさないものの (こことここを参照)、怒りを避けるために役立つ some の参照フレームを提供します。したがって、物事を割り引いて考え、PHP フレームワーク間の速度について誤った大まかな概念を与えるのが最善です。

このかなり立派な GitHub ソース コードによると、以下は PHP フレームワークの比較です。

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう

最後まで目を凝らさない限り、おそらくここにある PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう にさえ気付かないでしょう (たとえかなり目を細めたとしても)。はい、親愛なる皆さん、PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう は最後です!もちろん、これらの「フレームワーク」のほとんどはあまり実用的ではなく、役に立ちませんが、他の一般的なフレームワークと比較して PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう がいかに遅いかを示しています。

日常の Web アプリケーションは大量のデータに達することはほとんどないため、通常、この種の「速度の低下」はアプリケーションには現れません。ただし、同時実行数が 200 ~ 500 以上になると、サーバーはブロックされ始め、停止します。このとき、ハードウェアをいくら捨てても問題は解決せず、インフラコストは急激に上昇し、クラウドコンピューティングという崇高な理想は崩れ去ります。

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう

でも、元気出してください!この記事では、何をしてはいけないのかではなく、何ができるのかについて説明します。

良いニュースは、PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう アプリケーションを高速化するためにできることがたくさんあるということです。数倍のスピード。はい、冗談ではありません。同じコードベースを高速に作成し、インフラストラクチャ/ホスティング料金を月額数百ドル節約できます。どうやってするの?はじめましょう。

4 つのタイプの最適化

私の意見では、最適化は 4 つの異なるレベルで実行できます (つまり、PHP アプリケーションの場合):

  • 言語レベル: これは、より高速なバージョンの言語を使用し、コードの速度を低下させる言語の特定の機能やコーディング スタイルを避けることを意味します。

  • フレームワーク レベル: これらがこの記事で説明する内容です。

  • インフラストラクチャ レベル: PHP プロセス マネージャー、Web サーバー、データベースなどを調整します。

  • ハードウェア レベル: より優れ、より高速で、より強力なハードウェア ホスティング プロバイダーに移行します。

これらのタイプの最適化はすべて存在します (たとえば、php-fpm の最適化は非常に重要で強力です)。ただし、この記事の焦点は純粋にタイプ 2 の最適化、つまりフレームワークに関連するものにあります。

ちなみに、この数字には何の根拠もありませんし、一般に受け入れられている基準でもありません。私はこれを作りました。私が「サーバーにはタイプ 3 の最適化が必要です」と言うときに、決して私の言葉を引用しないでください。そうしないと、チーム リーダーがあなたを殺し、私を見つけ、そして私も殺すでしょう。

さあ、いよいよ約束の地に到着です。

注意 n 1 データベース クエリ

n 1 クエリの問題は、ORM を使用する場合によくある問題です。 PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう には Eloquent と呼ばれる強力な ORM があり、非常に美しく便利なので、何が起こっているのかを忘れてしまうことがよくあります。

非常に一般的なシナリオを考えてみましょう。指定された顧客リストによって行われたすべての注文を表示します。これは、電子商取引システムや、あるエンティティに関連するすべてのエンティティを表示する必要があるリストでは非常に一般的です。

次のようなコントローラーがあると想像できます:

class OrdersController extends Controller
{
    // ...

    public function getAllByCustomers(Request $request, array $ids) {
        $customers = Customer::findMany($ids);
        $orders = collect(); // new collection

        foreach ($customers as $customer) {
            $orders = $orders->merge($customer->orders);
        }

        return view('admin.reports.orders', ['orders' => $orders]);
    }
}

素晴らしい!しかもエレガントで美しい。 ??

残念ながら、PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう でこのようなコードを書くのは悲惨なアプローチです。

理由は以下の通りです。

ORM を使用して特定の顧客エンティティを検索すると、次のような SQL クエリが生成されます。

SELECT * FROM customers WHERE id IN (22, 45, 34, . . .);

これはまさに予想どおりです。その結果、返されたすべての行は、コントローラー関数のコレクション $customers に格納されます。

次に、各顧客を 1 人ずつループして注文を取得します。これにより、次のクエリ...

SELECT * FROM orders WHERE customer_id = 22;

...が顧客の数だけ実行されます。

言い換えると、1000 人の顧客の注文データを取得する必要がある場合、実行されるデータベース クエリの合計数は、1 (すべての顧客のデータを取得する場合)、1000 (各顧客の注文データを取得する場合) になります。顧客) )=1001。これが n 1 という名前の由来です。

もっと改善できないでしょうか? もちろんです!積極的な読み込みを使用すると、ORM に JOIN を強制的に実行させ、必要なデータをすべて 1 つのクエリで返すことができます。次のように:

$orders = Customer::findMany($ids)->with('orders')->get();

結果のデータ構造はもちろん入れ子構造ですが、注文データは簡単に抽出できます。この場合、生成される単一のクエリは次のようになります。

SELECT * FROM customers INNER JOIN orders ON customers.id = orders.customer_id WHERE customers.id IN (22, 45, ...);

もちろん、1 つのクエリは 1,000 のクエリよりも優れています。 1 万人の顧客を相手にしたら何が起こるか想像してみてください。つまり、各注文に含まれる商品も表示したい場合、それはまったく不可能です。このテクニックの名前はプリロードであり、ほぼいつでも役立つ可能性があることを覚えておいてください。

#キャッシュ設定!

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう の柔軟性の理由の 1 つは、フレームワークの一部である多数の設定ファイルです。写真の保存方法や保存場所を変更したいですか?

わかりました。

config/filesystems.php ファイルを (少なくともここまでは) 変更するだけです。複数のキュードライバーを使用したいですか? config/queue.php に自由に記述してください。先ほど集計したところ、フレームワークのさまざまな側面に対応する 13 個の構成ファイルがあることがわかりました。そのため、何を変更したい場合でも失望することはありません。

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう

PHP の特性を考慮すると、新しい Web リクエストが受信されるたびに、PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう は起動してすべてを開始し、

all 設定ファイルを解析して次のようにします。今度は違う方法で物事を行う方法を見つけてください。最近何も変わらなかったらばかばかしいです!リクエストごとに設定ファイルを再構築するのは無駄であり、回避することができます (実際には避けなければなりません)。解決策は、PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう が提供する簡単なコマンドです:

php artisan config:cache
これの目的は、利用可能なすべての設定ファイルを結合することです。単一のファイルにまとめられ、すぐに取得できるようにどこかにキャッシュされます。次回 Web リクエストが届くと、PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう はこの 1 つのファイルを読み取って動作を開始します。

言い換えれば、キャッシュの構成は非常にデリケートな操作であり、突然失敗する可能性があります。最大の落とし穴は、このコマンドを発行すると、構成ファイルに加えて、他の場所でのすべての

env() 関数呼び出しが null を返すことです。

よく考えてみれば当然のことです。構成キャッシュを使用する場合、フレームワークに次のように伝えていることになります。環境を静的に保ちたい場合、これが

.env ファイルの役割です。

そういえば、鉄壁で神聖で破ることのできない構成キャッシュ ルールをいくつか紹介します。

  • これは運用システムでのみ実行してください。

  • これは、構成を確実に凍結したい場合にのみ実行してください。

  • 何か問題が発生した場合は、

    phpArtisancache:clearを使用して設定を元に戻してください。

  • 会社への損失が大きくならないように祈ってください。

自動的にロードされるサービスを減らす

すべての人を助けるために、PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう は起動時に多数のサービスをロードします。 、これらのサービスは、

config/app.php ファイルの 'providers' 配列キーの一部として見つかります。私の状況を見てみましょう:

/*
    |--------------------------------------------------------------------------
    | Autoloaded Service Providers
    |--------------------------------------------------------------------------
    |
    | The service providers listed here will be automatically loaded on the
    | request to your application. Feel free to add your own services to
    | this array to grant expanded functionality to your applications.
    |
    */

    'providers' => [

        /*
         * PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう Framework Service Providers...
         */
        Illuminate\Auth\AuthServiceProvider::class,
        Illuminate\Broadcasting\BroadcastServiceProvider::class,
        Illuminate\Bus\BusServiceProvider::class,
        Illuminate\Cache\CacheServiceProvider::class,
        Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
        Illuminate\Cookie\CookieServiceProvider::class,
        Illuminate\Database\DatabaseServiceProvider::class,
        Illuminate\Encryption\EncryptionServiceProvider::class,
        Illuminate\Filesystem\FilesystemServiceProvider::class,
        Illuminate\Foundation\Providers\FoundationServiceProvider::class,
        Illuminate\Hashing\HashServiceProvider::class,
        Illuminate\Mail\MailServiceProvider::class,
        Illuminate\Notifications\NotificationServiceProvider::class,
        Illuminate\Pagination\PaginationServiceProvider::class,
        Illuminate\Pipeline\PipelineServiceProvider::class,
        Illuminate\Queue\QueueServiceProvider::class,
        Illuminate\Redis\RedisServiceProvider::class,
        Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
        Illuminate\Session\SessionServiceProvider::class,
        Illuminate\Translation\TranslationServiceProvider::class,
        Illuminate\Validation\ValidationServiceProvider::class,
        Illuminate\View\ViewServiceProvider::class,

        /*
         * Package Service Providers...
         */

        /*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        // App\Providers\BroadcastServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,

    ],

我再一次数了数,一共列出了 27 项服务! 现在,你可能需要所有的服务,但不太可能。

例如,我现在正好在构建一个 REST API,这意味着我不需要 Session Service Provider、View Service Provider 等。而且由于我是按照自己的方式来做一些事情,而不是按照框架的默认值来做,所以我也可以禁用 Auth Service Provider、Pagination Service Provider、Translation Service Provider 等。总而言之,对于我的用例来说,这些几乎有一半是不必要的。

仔细审视一下你的应用吧。它是否需要所有这些服务提供者?但是看在上帝的份上,请不要盲目地注释掉这些服务,然后推送到生产中去! 运行所有的测试,在开发机和暂存机上手动检查,并且在扣动扳机之前要非常非常偏执。

明智地使用中间件堆栈。

当你需要对传入的 Web 请求进行一些自定义处理时,创建一个新的中间件就是答案。现在,打开 app/Http/Kernel.php 并将中间件粘在 webapi 堆栈中是很有诱惑力的;这样一来,它就会在整个应用程序中变得可用,而且如果它没有做一些侵入性的事情(例如,像日志或通知)。

然而,随着应用程序的增长,如果所有(或大多数)这些全局中间件都存在于每个请求中,那么这个全局中间件的集合可能会成为应用程序的一个无声负担,即使没有业务原因。

换句话说,要小心你在哪里添加/应用新的中间件。在全局范围内添加一些东西可能会更方便,但从长远来看,性能惩罚是非常高的。我知道如果每次有新的变化都要有选择地应用中间件,你要承受的痛苦,但这是我心甘情愿承受的痛苦,也是我所推荐的!

避免使用 ORM (有时)

虽然 Eloquent 让 DB 交互的很多方面变得愉悦,但它是以速度为代价的。作为一个映射器,ORM 不仅要从数据库中获取记录,还要实例化模型对象,并用列数据对其进行填充。

所以,如果你做一个简单的 $users = User::all(),比如有10000个用户,框架会从数据库中获取 10000 行记录,并在内部做 10000 个 new User(),并用相关数据填充他们的属性。这是大量的工作在幕后进行,如果数据库是你的应用成为瓶颈的地方,绕过 ORM 有时是个好主意。

这对于复杂的 SQL 查询来说尤其如此,在这种情况下,你必须跳很多的圈子,写一个又一个的闭包,但最终还是能得到一个高效的查询。在这种情况下,最好做一个 DB::raw(),然后手工写查询。

根据 这个 的性能研究, 即使是简单的插入, Eloquent 也会随着记录数量的增加而变慢:

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう

尽量使用缓存

Web 应用优化中最保守的秘密之一就是缓存。

对于新手来说,缓存的意思是预先计算和存储昂贵的结果(昂贵的 CPU 和内存使用量),并在重复相同的查询时简单地返回。

例如,在一个电商商店里,可能会遇到,在 200 万种产品中,大多数时候人们都会对那些新鲜出炉的、在一定价格范围内的、针对特定年龄段的产品感兴趣。在数据库中查询这些信息是很浪费的——因为查询的内容不会经常变化,所以最好把这些结果存储在我们可以快速访问的地方。

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう 内置支持多种类型的缓存。除了使用缓存驱动和从底层构建缓存系统外,你可能还想使用一些PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう 包,方便模型缓存、查询缓存等。

但是请注意, 在一定的简化用例之外, 预制的缓存包可能会带来更多的问题, 而不是解决这些问题.

优先选择内存缓存

当你在 PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう 中缓存一些东西时, 你有几个选项可以选择将需要缓存的计算结果存储在哪里。这些选项也被称为 缓存驱动。所以, 虽然使用文件系统来存储缓存结果是可能的,也是完全合理的,但这并不是缓存的真正目的。

理想情况下,你希望使用内存中(完全活在 RAM 中)的缓存,比如 Redis、Memcached、MongoDB 等,这样在较高的负载下,缓存就能起到至关重要的作用,而不是自己成为瓶颈。

现在,你可能会认为拥有 SSD 磁盘和使用 RAM 棒几乎是一样的,但还差得远。即使是非正式的 基准测试也显示,在速度方面,RAM优于SSD的10-20倍。

在缓存方面,我最喜欢的系统是 Redis。它的速度 快得离谱(每秒 10 万次读取操作是很常见的),对于非常大的缓存系统,可以很容易地演变成一个 集群。

缓存路由

就像应用程序的配置一样,路由不会随着时间的推移而改变,是缓存的理想选择。如果你像我一样无法忍受大文件,并且最终把你的 web.phpapi.php 分割成几个文件的话,这一点尤其适用。 一个简单的PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう命令就可以把所有可用的路由打包并保存起来, 方便以后的访问:

php artisan route:cache

而当你最终要增加或改变路由时,只需这样做即可。

php artisan route:clear

图像优化和 CDN

图片是大多数网络应用的核心和灵魂。巧合的是,它们也是最大的带宽消耗者,也是导致应用程序/网站速度慢的最大原因之一。如果你只是简单地将上传的图片天真地存储在服务器上,然后以 HTTP 响应的方式发送回来,你就会让一个巨大的优化机会溜走。

我的第一个建议是不要在本地存储图片——有数据丢失的问题要处理,而且取决于你的客户在哪个地理区域,数据传输可能会非常缓慢。

相反,选择像 Cloudinary 这样的解决方案,它可以自动动态调整和优化图像的大小。

如果这不可能,使用类似 Cloudflare 的东西来缓存和服务图像,同时它们存储在你的服务器上。

如果连这一点都做不到,调整一下你的网络服务器软件,压缩资产并引导访问者的浏览器去缓存东西,就会有很大的不同。下面是一个 Nginx 配置的片段。

server {

   # file truncated

    # gzip compression settings
    gzip on;
    gzip_comp_level 5;
    gzip_min_length 256;
    gzip_proxied any;
    gzip_vary on;

   # browser cache control
   location ~* \.(ico|css|js|gif|jpeg|jpg|png|woff|ttf|otf|svg|woff2|eot)$ {
         expires 1d;
         access_log off;
         add_header Pragma public;
         add_header Cache-Control "public, max-age=86400";
    }
}

我知道图片优化与 PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう 无关, 但这是一个如此简单而强大的技巧 (而且经常被忽视), 所以我忍不住了。

自动加载器优化

自动加载是 PHP 中一个整洁的、并不古老的功能,它可以说是拯救了这门语言的末日。尽管如此,通过破译给定的命名空间字符串来寻找和加载相关类的过程是需要时间的,在生产部署中,如果需要高性能,可以避免这个过程。 再一次,PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう 有一个单一命令的解决方案来解决这个问题:

composer install --optimize-autoloader --no-dev

与队列交朋友

队列 是指当有很多事情时,你如何处理这些事情,而且每件事情都需要几毫秒才能完成。一个很好的例子是发送电子邮件——在网络应用中,一个广泛的用例是当用户执行一些操作时,发出几封通知邮件。

例如,在一个新推出的产品中,你可能希望每当有人下单超过一定值时,公司领导层(大约6-7个电子邮件地址)就会收到通知。假设你的邮件网关能在500ms内响应你的SMTP请求,那么在订单确认启动之前,用户需要等待3-4秒。一个非常糟糕的用户体验,我相信你会同意。

补救的办法是在任务进来的时候就把它们存储起来,告诉用户一切都很顺利,然后再处理它们(几秒钟)。如果出现错误,在宣布失败之前,排队的任务可以重试几次。

PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう

虽然队列系统使设置复杂化了一些 (并增加了一些监控开销), 但它在现代Web应用中是不可缺少的。

资源优化 (PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう Mix)

对于你的 PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう 应用中的任何前端资源,请确保有一个管道可以编译和最小化所有的资源文件。 那些对 Webpack,Gulp,Parcel 等打包器系统很熟悉的人不需要费心,但如果你还没有这样做,PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう Mix是一个可靠的推荐。

Mix 是一个轻量级的 (老实说,很讨人喜欢!) 围绕Webpack的打包器,它可以处理你所有的 CSS,SASS,JS 等文件。 一个典型的 .mix.js 文件可以像这样小,但仍然可以发挥出巨大的作用。

const mix = require('laravel-mix').mix.js('resources/js/app.js', 'public/js');

mix.js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css');

当您准备部署生产环境并运行 npm run production 时,它将自动处理导入,最小化,优化以及整个工作流程。 Mix 不仅关心传统的 JS和 CSS 文件,而且还关心您在应用程序工作流程中可能使用的 Vue 和 React 组件。

更多信息参考 这里!

结论

パフォーマンスの最適化は科学というより芸術です。何を行うかよりも、その方法と量を知ることが重要です。とはいえ、PHP と PHP と PHP と PHP と PHP と PHP と PHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょう アプリケーションで何をどの程度最適化できるかには制限がありません。

しかし、何をするにしても、別れのアドバイスを残したいと思います。最適化は、聞こえが良いからや、100,000 を超えるものに興味があるからではなく、正当な理由があって行われるべきです。ユーザーは、実際にユーザーが 10 人しかいない場合のアプリケーションのパフォーマンス。

アプリケーションを最適化する必要があるかどうかわからない場合は、このスズメバチの巣をつつくべきではありません。ただ動作するだけで、時には退屈に感じることもありますが、やるべきことはきちんとこなすアプリのほうが、時々失敗する突然変異型のハイブリッド スーパー マシンに最適化されたアプリよりも 10 倍も望ましいのです。

英語原文アドレス: https://geekflare.com/laravel-optimization/

翻訳アドレス: https://learnku.com/laravel/t/47213

[関連する推奨事項: laravel ビデオチュートリアル ]

以上がPHP と Laravel を最適化して Web アプリケーションのパフォーマンスを向上させる方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。