キャッシュ設定Laravelは読み書きしやすい、多くのキャッシュシステムに対する統一したAPIを提供します。キャッシュの設定は、config/cache.phpで指定します。アプリケーション全体のデフォルトとして使用するキャッシュドライバをこのファイルの中で指定します。MemcachedやRedisなど、人気のあるキャッシュシステムをLaravelは最初からサポートしています。キャッシュ設定ファイルは、様々な他のオプションも含んでいます。コメントで説明してありますので、よく読んで確認してください。Laravelのデフォルトとして、fileキャッシュドライバが設定されています。ファイルシステムへオブジェクトをシリアライズして保存します。大きなアプリケーションではMemecachedやAPCのような、より堅牢なドライバを使うことをおすすめします。複数のドライバを使用するキャッシュ設定も可能です。ドライバ事前要件データベースデータベースをキャッシュドライバに使用する場合、キャッシュアイテムを構成するテーブルを用意する必要があります。このテーブルの「スキーマ」を定義するサンプルを見てください。Artisanコマンドを使用することもできます。PECLパッケージをインストールする必要があります。全Memcachedサーバは、config/cache.php設定ファイルにリストしてください。],],さらに、UNIXソケットパスへ、hostオプションを設定することもできます。これを行うにはportオプションに0を指定してください。PHP拡張のどちらかをインストールしておく必要があります。Redisの設定についての詳細は、Laravelドキュメントページを読んでください。キャッシュの使用法キャッシュインスタンスの取得Illuminate\Contracts\Cache\FactoryとIlluminate\Contracts\Cache\Repository契約は、Laravelのキャッシュサービスへのアクセスを提供します。Factory契約は、アプリケーションで定義している全キャッシュドライバへのアクセスを提供します。Repository契約は通常、cache設定ファイルで指定している、アプリケーションのデフォルトキャッシュドライバの実装です。このドキュメント全体で使用している、Cacheファサードも利用できます。Cacheファサードは裏で動作している、Laravelキャッシュ契約の実装への便利で簡潔なアクセスを提供しています。}}複数のキャッシュ保存先へのアクセスCacheファサードのstoreメソッドを使い、様々なキャッシュ保存域へアクセスできます。storeメソッドに渡すキーは、cache設定ファイルのstores設定配列にリストしている保存域の一つです。10);キャッシュからアイテム取得Cacheファサードのgetメソッドは、キャッシュからアイテムを取得するために使用します。アイテムがキャッシュに存在していない場合は、nullが返されます。アイテムが存在していない時に返したい、カスタムデフォルト値をgetメソッドの第2引数として渡すこともできます。'default');デフォルト値として「クロージャ」を渡すこともできます。キャッシュに指定したアイテムが存在していない場合、「クロージャ」の結果が返されます。クロージャを渡すことで、データベースや外部サービスからデフォルト値を取得するのを遅らせることができます。DB::table(...)->get();});アイテムの存在確認hasメソッドで、キャッシュにアイテムが存在しているかを調べることができます。このメソッドは、値がnullかfalseの場合、falseを返します。//}値の増減incrementとdecrementメソッドはキャッシュの整数アイテムの値を調整するために使用します。両方のメソッドともそのアイテムの値をどのくらい増減させるかの増分をオプションの第2引数に指定できます。$amount);取得不可時更新キャッシュからアイテムを取得しようとして、指定したアイテムが存在しない場合は、デフォルト値を保存したい場合もあるでしょう。全ユーザーをキャッシュから取得しようとし、存在していない場合はデータベースから取得しキャッシュへ追加したい場合です。Cache::rememberメソッドを使用します。DB::table('users')->get();});キャッシュに存在しない場合、rememberメソッドに渡された「クロージャ」が実行され、結果がキャッシュに保存されます。rememberForeverメソッドでアイテムをキャッシュから取得するか、できない場合は永久に保存できます。DB::table('users')->get();});取得後削除キャッシュからアイテムを取得した後に削除したい場合は、pullメソッドを使用します。getメソッドと同様にキャッシュにアイテムが存在していない場合は、nullが返ります。Cache::pull('key');キャッシュへアイテム保存Cacheファサードのputメソッドにより、キャッシュにアイテムを保存できます。キャッシュにアイテムを保存するときには、何分保存するかを指定する必要があります。$minutes);どのくらいでアイテムが無効になるかを分数で指定する代わりに、キャッシュされたアイテムの有効期限を示すDateTimeインスタンスを渡すこともできます。$expiresAt);非存在時保存addメソッドはキャッシュに保存されていない場合のみ、そのアイテムを保存します。キャッシュに実際にアイテムが追加された場合はtrueが返ってきます。なければfalseが返されます。$minutes);アイテムを永遠に保存foreverメソッドはそのアイテムをキャッシュへ永遠に保存します。した値は有効期限が切れないため、forgetメソッドを使用し、削除する必要があります。Memcachedドライバーを使用する場合、キャッシュが最大値に達すると、"forever"を指定したアイテムも削除されます。キャッシュからのアイテム削除forgetメソッドでキャッシュからアイテムを削除します。Cache::forget('key');キャッシュ全体をクリアしたい場合はflushメソッドを使います。flushメソッドは、キャッシュのプレフィックスを考慮せずに、キャッシュから全アイテムを削除します。他のアプリケーションと共有するキャッシュを削除するときは、利用を熟考してください。memcachedかredisドライバを使用する必要があります。全てのサーバが、同じ中央キャッシュサーバに接続する必要があります。アトミックロックにより競合状態を心配することなく、分散型のロック操作を実現できます。Forgeでは、一度に1つのリモートタスクを1つのサーバで実行するために、アトミックロックを使用しています。ロックを生成し、管理するにはCache::lockメソッドを使用します。Cache::lock('foo')->release();}getメソッドは、クロージャも引数に取ります。クロージャ実行後、Laravelは自動的にロックを解除します。無期限のロックを獲得し、自動的に開放する});リクエスト時にロックが獲得できないときに、利用可能になるまで待機するようにLaravelに指示できます。待機後、ロックを獲得}blockメソッドはデフォルトで、ロックが利用できるまで無期限に待機します。指定秒数だけ待機したい場合は、blockForメソッドを使用します。指定された時間内にロックが獲得できない場合は、Illuminate\Contracts\Cache\LockTimeoutExceptionが投げられます。最大5秒待機し、ロックを獲得});cacheヘルパCacheファサードとCache契約に付け加え、キャッシュからのデータ取得/保存を行う、グローバルcache関数も使用できます。cache関数を文字列引数一つで呼び出す場合、指定したキーの値を返します。cache('key');キー/値ペアの配列と、有効期間を関数へ渡す場合、指定期間の間、値をキャッシュへ保存します。now()->addSeconds(10));グローバルcache関数への呼び出しをテストする場合、ファサードのテストと同様に、Cache::shouldReceiveメソッドを使います。fileとdatabaseキャッシュドライバ使用時、キャッシュタグはサポートされません。"forever"を使い、複数のタグをつけたキャッシュを使用する場合、古いレコードを自動的にパージするmemcachedのようなドライバがパフォーマンス的に最適です。タグ付けキャッシュアイテムの保存キャッシュタグにより、キャッシュ中の関連するアイテムへタグ付けできます。その後、指定したタグがつけられたキャッシュの値を全部削除できます。タグを順番に指定する配列を渡すことで、タグ付けしたキャッシュへアクセスできます。例としてタグ付けしたキャッシュにアクセスし、キャッシュへ値をputしてみましょう。$minutes);タグ付けキャッシュアイテムへのアクセスタグ付けしたキャッシュアイテムを取得するには、tagsメソッドに同じ順序でタグのリストを渡し、続けてgetメソッドで取得したいキーを指定します。'authors'])->get('Anne');タグ付けキャッシュアイテムの削除タグ一つ、もしくはタグのリストに結びついた全アイテムを一度に消去することができます。次の実行文はpeopleかauthorsのどちらか、または両方にタグ付けされたキャッシュを全部削除します。AnneとJohnは両方共キャッシュから削除されます。'authors'])->flush();対照的に、次の実行分ではauthorsにタグ付けしたキャッシュのみ削除されますので、Anneが削除され、Johnは残ります。Cache::tags('authors')->flush();カスタムキャッシュドライバの追加ドライバープログラミングカスタムキャッシュドライバを作成するには、Illuminate\Contracts\Cache\Store契約を最初に実装する必要があります。そのため、MongoDBキャッシュドライバは、以下のような実装になるでしょう。{}}これらのメソッドをMongoDB接続を用い、実装するだけです。各メソッドをどのように実装するかの例は、フレームワークのIlluminate\Cache\MemcachedStoreのソースコードを参照してください。実装を完了したら、ドライバを登録します。カスタムキャッシュドライバーをどこに設置するか迷っているなら、appディレクトリ下にExtensionsの名前空間で作成できます。Laravelはアプリケーション構造を強制していませんので、自分の好みに合わせてアプリケーションを自由に構築できることを忘れないでください。ドライバ登録Laravelにカスタムキャッシュドライバを登録するには、Cacheファサードのextendメソッドを使います。新しくインストールしたLaravelに含まれている、デフォルトのApp\Providers\AppServiceProviderのbootメソッドで、Cache::extendを呼び出せます。拡張を設置するために自身のサービスプロバイダを作成することもできます。config/app.phpプロバイダ配列に、そのプロバイダを登録し忘れないようにしてください。}}extendメソッドの最初の引数はドライバ名です。これはconfig/cache.php設定ファイルの、driverオプションと対応します。第2引数は、Illuminate\Cache\Repositoryインスタンスを返すクロージャです。クロージャには、サービスコンテナインスタンスの$appインスタンスが渡されます。拡張を登録したら、config/cache.php設定ファイルのdriverオプションへ、拡張の名前を登録してください。イベント全キャッシュ操作に対してコードを実行するには、キャッシュが発行するイベントを購読する必要があります。通常、イベントリスナはEventServiceProviderの中へ設置します。2018.ドキュメントメンテナンス期間は終了しました。注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュをURLへ付加します。閉じる移動クリックで即時移動します。適用ボタンクリック後に、全項目まとめて適用されます。Scaffoldスカフォールド型枠生成スカフィールドLargeスクリーン表示幅640px80%90%100%インデントなし1rem2rem3rem本文フォントコードフォントフォント適用確認フォントの指定フィールドから、フォーカスが外れると、当ブロックの内容に反映されます。EnglishのDisplayもPreviewしてください。フォント設定時、表示に不具合が出た場合、当サイトのクッキーを削除してください。バックスラッシュを含むインライン\Code\Blockの例です。以下はコードブロックの例です。}}設定を保存する前に、表示が乱れないか必ず確認してください。CSSによるフォントファミリー指定の知識がない場合は、フォントを変更しないほうが良いでしょう。