0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

laravelのbladeファイルがキャッシュ反映されない場合

Posted at

本記事の目的

システム内にお知らせや注意文言が記載されている場合、それの文言を急に差し替える為にbladeファイルを編集したが、反映されない場合があり原因を調査したのでその備忘録。
冷静に対処したら良かったが、当時はかなりてんぱった。

結論

bladeファイルのキャッシュはタイムスタンプ比較で生成されるので、バックアップファイルから復元した場合などは別途タイムスタンプを更新する必要がある。

##確認
①以下のようにlaravelのトップページに「動作確認用」と文字を入れておく。

welcome.php
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>
        動作確認用

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">

        <!-- Styles -->

image.png

②以下のようにバックアップを取得しておく
cp -ip welcome.blade.php bkwelcome.blade.php

③welcome.phpから「動作確認用」という文字を消す→反映される。

③バックアップを戻す(※やっぱりさっきの作業はなしで!と依頼元から連絡があったときを想定)
$ cp -ip bkwelcome.blade.php welcome.blade.php
→このようにファイルを戻しても反映されない。

④タイムスタンプを更新する。
touch welcome.blede.php→これで反映される。

おそらく上記の理由

公式のドキュメントには以下の記載があります。
「すべてのBladeテンプレートはプレーンなPHPコードにコンパイルされ、変更されるまでキャッシュされます。」

この仕組み自体がlaravelの高速化に役立っているのですが、今回はこちらが悪いほうに働いたようです。

この「変更されるまで」というのがおそらくタイムスタンプ比較なのではないかと思います。
そのため、バックアップファイルをそのまま戻した場合は、タイムスタンプが古いままなのでキャッシュされない、ようです。

このような事象は普通にググると、php artisanでclearしたらよい、などど出てきますが、
本番稼働中の環境では影響範囲が見えない為やりたくないのでタイムスタンプ更新で回避しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?