view:cache
TL;DR
- 用途:Blade ビューを事前にコンパイルしキャッシュへ保存する
- 最低コマンド:
php artisan view:cache - よくある罠
- ビューに構文エラーがあるとキャッシュ生成に失敗
- ビュー更新後にキャッシュをクリアしないと古いキャッシュが残る
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:cache→view: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);
});

