view:cache — ビューキャッシュを有効にするコマンド

artisan

view:cache

TL;DR

  • 用途:Blade ビューを事前にコンパイルしキャッシュへ保存する
  • 最低コマンドphp artisan view:cache
  • よくある罠
  1. ビューに構文エラーがあるとキャッシュ生成に失敗
  2. ビュー更新後にキャッシュをクリアしないと古いキャッシュが残る
  3. bootstrap/cache/views.php は手動で編集しない

概要

Laravel はリクエスト時に Blade テンプレートをコンパイルしますが、view:cache を実行すると全ビューを一括でコンパイルし、bootstrap/cache/views.php に保存します。
これにより、リクエスト時のコンパイルオーバーヘッドがゼロになり、本番環境でのレスポンス速度が向上します。CI/CD でデプロイ時に自動化しておくと便利です。


コマンド構文

php artisan view:cache

備考view:cache にはオプションはありません。実行すると既存のキャッシュは上書きされます。

戻り値int(0=成功)
例外:コンパイルエラーがあると RuntimeException が投げられ、キャッシュファイルは生成されません。


実務での使い方

# 本番環境へデプロイ直前
php artisan view:cache
// Laravel 12 で Artisan CLI を PHP 内から呼び出す例
Artisan::call('view:cache');

よくある落とし穴と対策

エラー・症状 原因 対策
View [*] not found ビューファイルが削除または名前変更 ビューを再生成するか、view:clear でキャッシュをクリア
Syntax error on line X Blade テンプレートに構文ミス 指定行を修正して再実行
Permission denied bootstrap/cache の書き込み権限不足 適切な権限を付与(例:chmod -R 775 bootstrap/cache

代替コマンド・比較

コマンド 目的 使用場面
view:clear キャッシュを削除 ビュー変更後、デプロイ前
view:compile 1つのビューをコンパイル デバッグ時に個別ビューを確認したいとき
config:cache 設定ファイルをキャッシュ 設定変更後に実行

選択ポイント

  • 本番では view:cacheview:clear の順でデプロイ。
  • 開発時は view:clear でキャッシュをクリアし、必要に応じて view:cache を実行。

テスト例(Pest)

it('compiles all Blade views into cache', function () {
    // テスト用ビューを作成
    file_put_contents(resource_path('views/test.blade.php'), '<h1>Hello</h1>');

    // キャッシュクリア
    Artisan::call('view:clear');

    // キャッシュ生成
    Artisan::call('view:cache');

    $cacheFile = base_path('bootstrap/cache/views.php');
    expect(file_exists($cacheFile))->toBeTrue();

    $content = file_get_contents($cacheFile);
    expect($content)->toContain('Hello');

    // 後片付け
    unlink(resource_path('views/test.blade.php'));
    unlink($cacheFile);
});

参考リンク


レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする