設定Configuration
LARAVELは多くのキャッシュシステムに統一したAPIを提供しています。キャッシュの設定はapp/config/cache.php
で設定されています。アプリケーション全体でデフォルトとして使用するキャッシュドライバーをこのファイルの中で指定します。Laravelは最初からMemcachedやRedisなど人気のあるキャッシュシステムをサポートしています。Laravel provides a unified API for various caching systems. The cache configuration is located at app/config/cache.php
. In this file you may specify which cache driver you would like used by default throughout your application. Laravel supports popular caching backends like Memcached[http://memcached.org] and Redis[http://redis.io] out of the box.
キャッシュ設定ファイルは様々な他のオプションを含んでいます。コメントで説明してありますので、よくお読みください。Laravelのデフォルトでは、file
キャッシュドライバーが設定されています。ファイルシステムにオブジェクトをシリアライズして保存します。大きなアプリケーションでは、MemecachedやAPCのような、メモリに保存するキャッシュを使用することをおすすめします。The cache configuration file also contains various other options, which are documented within the file, so make sure to read over these options. By default, Laravel is configured to use the file
cache driver, which stores the serialized, cached objects in the filesystem. For larger applications, it is recommended that you use an in-memory cache such as Memcached or APC.
キャッシュの使用Cache Usage
キャッシュにアイテムを一つ保存するStoring An Item In The Cache
Cache::put('key', 'value', $minutes);
Carbonオブジェクトを有効日時として設定するUsing Carbon Objects To Set Expire Time
$expiresAt = Carbon::now()->addMinutes(10);
Cache::put('key', 'value', $expiresAt);
存在しない場合、キャッシュにアイテムを一つ保存するStoring An Item In The Cache If It Doesn't Exist
Cache::add('key', 'value', $minutes);
add
メソッドは本当にキャッシュに追加した場合のみtrue
を返します。それ以外の場合はfalse
を返します。The add
method will return true
if the item is actually added to the cache. Otherwise, the method will return false
.
キャッシュ中に存在するかチェックするChecking For Existence In Cache
if (Cache::has('key'))
{
//
}
キャッシュからアイテム一つを取得するRetrieving An Item From The Cache
$value = Cache::get('key');
アイテムを一つ取得するかデフォルト値を得るRetrieving An Item Or Returning A Default Value
$value = Cache::get('key', 'default');
$value = Cache::get('key', function() { return 'default'; });
アイテムを一つ永久に保存するStoring An Item In The Cache Permanently
Cache::forever('key', 'value');
場合により、キャッシュからアイテムを取得するが、それが存在しない場合はデフォルト値を保存したい場合もあるでしょう。それにはCache::remember
メソッドを使用できます。Sometimes you may wish to retrieve an item from the cache, but also store a default value if the requested item doesn't exist. You may do this using the Cache::remember
method:
$value = Cache::remember('users', $minutes, function()
{
return DB::table('users')->get();
});
更にremember
とforever
を一緒に使うこともできます。You may also combine the remember
and forever
methods:
$value = Cache::rememberForever('users', function()
{
return DB::table('users')->get();
});
キャッシュには全アイテムがシリアライズして保存されることに注目してください。ですからどんなタイプのデーターでも自由に保存できます。Note that all items stored in the cache are serialized, so you are free to store any type of data.
キャッシュからアイテムを引き出すPulling An Item From The Cache
キャッシュからあるアイテムを引き出し、その後削除したい場合は、pull
メソッドを使用します。If you need to retrieve an item from the cache and then delete it, you may use the pull
method:
$value = Cache::pull('key');
キャッシュから一つのアイテムを消去するRemoving An Item From The Cache
Cache::forget('key');
増減操作Increments & Decrements
'file'と'database'を除くドライバーでは、increment
とdecrement
操作がサポートされています。All drivers except file
and database
support the increment
and decrement
operations:
値を増加させるIncrementing A Value
Cache::increment('key');
Cache::increment('key', $amount);
値を減少させるDecrementing A Value
Cache::decrement('key');
Cache::decrement('key', $amount);
キャッシュタグCache Tags
**注目:**キャッシュタグは
file
とdatabase
キャッシュドライバーにはサポートされていません。さらに"forever"で保存されているキャッシュに多くのタグを使用する場合、古いレコードを自動パージするmemcached
のようなドライバーで最高のパフォーマンスが出せるでしょう。Note: Cache tags are not supported when using thefile
ordatabase
cache drivers. Furthermore, when using multiple tags with caches that are stored "forever", performance will be best with a driver such asmemcached
, which automatically purges stale records.
タグ付けしたキャッシュにアクセスするAccessing A Tagged Cache
キャッシュタグにより、キャシュの中のアイテムをタグに関連付けることができるだけでなく、名前を指定しタグ付けした全キャッシュを消去することもできます。タグ付けしたキャッシュにアクセスするには、tags
メソッドを使用して下さい。Cache tags allow you to tag related items in the cache, and then flush all caches tagged with a given name. To access a tagged cache, use the tags
method.
タグ付けしたキャッシュに保存するには、順序に沿って、引数にタグ名のリスト、もしくは配列を渡します。You may store a tagged cache by passing in an ordered list of tag names as arguments, or as an ordered array of tag names:
Cache::tags('people', 'authors')->put('John', $john, $minutes);
Cache::tags(array('people', 'artists'))->put('Anne', $anne, $minutes);
remember
、forever
、rememberForever
を含め、全キャッシュ保存メソッドとタグを組み合わせて利用できます。また、increment
とdecrement
のようなその他のキャッシュメソッドも同様に、タグ付けしたキャッシュのアイテムへアクセスできます。You may use any cache storage method in combination with tags, including remember
, forever
, and rememberForever
. You may also access cached items from the tagged cache, as well as use the other cache methods such as increment
and decrement
.
タグ付けしたキャッシュの中のアイテムへアクセスするeAccessing Items In A Tagged Cache
タグ付けしたキャシュへアクセスするには、保存したのと同じ順番でタグのリストを渡してください。To access a tagged cache, pass the same ordered list of tags used to save it.
$anne = Cache::tags('people', 'artists')->get('Anne');
$john = Cache::tags(array('people', 'authors'))->get('John');
名前、または名前のリストを指定し、タグ付けしたアイテムを全部消去できます。例えば、次のコードにより、people
かauthors
、またはその両方にタグ付けされた全キャッシュ済みアイテムが削除されます。ですから、"Anne"と"John"両アイテムはキャッシュから削除されます。You may flush all items tagged with a name or list of names. For example, this statement would remove all caches tagged with either people
, authors
, or both. So, both "Anne" and "John" would be removed from the cache:
Cache::tags('people', 'authors')->flush();
その一方、次のコードではauthors
タグ付けされたキャッシュだけが削除されるため、"John"は削除されますが、"Anne"は残ります。In contrast, this statement would remove only caches tagged with authors
, so "John" would be removed, but not "Anne".
Cache::tags('authors')->flush();
データベースキャッシュDatabase Cache
database
キャッシュドライバーを使う場合、キャッシュアイテムを保存するテーブルを用意する必要があります。テーブル宣言を行うSchema
の一例です。When using the database
cache driver, you will need to setup a table to contain the cache items. You'll find an example Schema
declaration for the table below:
Schema::create('cache', function($table)
{
$table->string('key')->unique();
$table->text('value');
$table->integer('expiration');
});