نسخه:

حافظه پنهان

پیکربندی

لاراول یک API یکپارچه برای سیستم های کش مختلف ارائه می دهد. پیکربندی کش در واقع شده است config/cache.php . در این فایل می‌توانید مشخص کنید که کدام درایور کش را می‌خواهید به‌طور پیش‌فرض در برنامه‌تان استفاده شود. لاراول از پشتیبان های کش محبوب مانند Memcached و Redis خارج از جعبه پشتیبانی می کند.

فایل پیکربندی کش همچنین شامل گزینه‌های مختلف دیگری است که در داخل فایل مستند شده‌اند، بنابراین حتماً این گزینه‌ها را بخوانید. به‌طور پیش‌فرض، لاراول به گونه‌ای پیکربندی شده است که از file درایور حافظه پنهان استفاده کند، که اشیاء سریال‌سازی شده و کش‌شده را در سیستم فایل ذخیره می‌کند. برای برنامه‌های بزرگ‌تر، توصیه می‌شود که از یک کش در حافظه مانند Memcached یا APC استفاده کنید. حتی ممکن است چندین پیکربندی کش را برای یک درایور پیکربندی کنید.

قبل از استفاده از کش Redis با لاراول، باید predis/predis بسته (~1.0) را از طریق Composer نصب کنید.

استفاده از کش

ذخیره یک آیتم در حافظه پنهان

Cache::put('key', 'value', $minutes);

استفاده از اشیاء کربنی برای تنظیم زمان انقضا

$expiresAt = Carbon::now()->addMinutes(10);
 
Cache::put('key', 'value', $expiresAt);

ذخیره یک آیتم در حافظه پنهان در صورت عدم وجود

Cache::add('key', 'value', $minutes);

اگر آیتم واقعاً به حافظه پنهان اضافه شود، متد add برمی گردد . در غیر این صورت، روش برمی گردد . true false

بررسی وجود در حافظه پنهان

if (Cache::has('key'))
{
//
}

بازیابی یک آیتم از حافظه پنهان

$value = Cache::get('key');

بازیابی یک مورد یا برگرداندن یک مقدار پیش فرض

$value = Cache::get('key', 'default');
 
$value = Cache::get('key', function() { return 'default'; });

ذخیره یک آیتم در کش به طور دائم

Cache::forever('key', 'value');

گاهی اوقات ممکن است بخواهید یک مورد را از حافظه پنهان بازیابی کنید، اما اگر مورد درخواستی وجود نداشته باشد، یک مقدار پیش فرض را نیز ذخیره کنید. می توانید این کار را با استفاده از Cache::remember روش زیر انجام دهید:

$value = Cache::remember('users', $minutes, function()
{
return DB::table('users')->get();
});

همچنین می توانید این remember و forever روش ها را با هم ترکیب کنید:

$value = Cache::rememberForever('users', function()
{
return DB::table('users')->get();
});

توجه داشته باشید که تمام موارد ذخیره شده در حافظه پنهان سریالی هستند، بنابراین شما می توانید هر نوع داده ای را ذخیره کنید.

کشیدن یک آیتم از حافظه پنهان

اگر می خواهید یک مورد را از حافظه پنهان بازیابی کنید و سپس آن را حذف کنید، می توانید از pull روش زیر استفاده کنید:

$value = Cache::pull('key');

حذف یک مورد از حافظه پنهان

Cache::forget('key');

دسترسی به فروشگاه های کش خاص

هنگام استفاده از چند فروشگاه کش، می توانید از طریق store روش زیر به آنها دسترسی داشته باشید:

$value = Cache::store('foo')->get('key');

افزایش و کاهش

همه درایورها به جز database پشتیبانی از increment و decrement عملیات:

افزایش یک مقدار

Cache::increment('key');
 
Cache::increment('key', $amount);

کاهش یک مقدار

Cache::decrement('key');
 
Cache::decrement('key', $amount);

برچسب های کش

توجه: file تگ های کش هنگام استفاده از درایورهای کش پشتیبانی نمی شوند database . علاوه بر این، هنگام استفاده از چندین تگ با حافظه پنهان که "برای همیشه" ذخیره می شوند، عملکرد بهتری با درایوری مانند memcached , که به طور خودکار رکوردهای قدیمی را پاک می کند، خواهد بود.

دسترسی به کش برچسب گذاری شده

تگ های کش به شما این امکان را می دهند که آیتم های مرتبط را در کش تگ کنید و سپس تمام کش هایی که با یک نام مشخص شده اند را پاک کنید. برای دسترسی به کش برچسب گذاری شده، از tags روش استفاده کنید.

می‌توانید یک حافظه پنهان برچسب‌گذاری شده را با ارسال فهرست مرتب شده از نام برچسب‌ها به عنوان آرگومان یا آرایه مرتب شده از نام برچسب‌ها ذخیره کنید:

Cache::tags('people', 'authors')->put('John', $john, $minutes);
 
Cache::tags(['people', 'artists'])->put('Anne', $anne, $minutes);

می‌توانید از هر روش ذخیره‌سازی حافظه پنهان در ترکیب با برچسب‌ها از جمله remember ، forever و و استفاده کنید rememberForever . همچنین می توانید از کش برچسب گذاری شده به موارد ذخیره شده در حافظه پنهان دسترسی داشته باشید و همچنین از سایر روش های کش مانند increment و استفاده کنید decrement .

دسترسی به موارد در کش برچسب گذاری شده

برای دسترسی به حافظه پنهان برچسب گذاری شده، همان لیست مرتب شده از برچسب ها را ارسال کنید که برای ذخیره آن استفاده شده است.

$anne = Cache::tags('people', 'artists')->get('Anne');
 
$john = Cache::tags(['people', 'authors'])->get('John');

شما می توانید تمام موارد برچسب گذاری شده با نام یا لیستی از نام ها را خیط و پیت کنید. به عنوان مثال، این عبارت تمام کش های برچسب گذاری شده با یکی people ، authors یا هر دو را حذف می کند. بنابراین، هر دو "آن" و "جان" از حافظه پنهان حذف می شوند:

Cache::tags('people', 'authors')->flush();

در مقابل، این عبارت فقط حافظه های پنهان برچسب گذاری شده با را حذف می کند authors ، بنابراین "جان" حذف می شود، اما نه "آن".

Cache::tags('authors')->flush();

رویدادهای حافظه پنهان

برای اجرای کد در هر عملیات کش، می توانید به رویدادهایی که توسط کش اجرا می شود گوش دهید:

Event::listen('cache.hit', function($key, $value) {
//
});
 
Event::listen('cache.missed', function($key) {
//
});
 
Event::listen('cache.write', function($key, $value, $minutes) {
//
});
 
Event::listen('cache.delete', function($key) {
//
});

کش پایگاه داده

هنگام استفاده از database درایور کش، باید جدولی را تنظیم کنید که حاوی آیتم های کش باشد. Schema برای جدول زیر نمونه ای از بیانیه را خواهید دید :

Schema::create('cache', function($table)
{
$table->string('key')->unique();
$table->text('value');
$table->integer('expiration');
});

حافظه پنهان حافظه پنهان

استفاده از کش Memcached مستلزم نصب بسته Memcached PECL است.

پیکربندی پیش‌فرض از TCP/IP بر اساس Memcached::addServer استفاده می‌کند :

'memcached' => array(
array('host' => '127.0.0.1', 'port' => 11211, 'weight' => 100),
),

همچنین می توانید این host گزینه را روی مسیر سوکت یونیکس تنظیم کنید. اگر این کار را انجام دهید، port گزینه باید روی 0 :

'memcached' => array(
array('host' => '/var/run/memcached/memcached.sock', 'port' => 0, 'weight' => 100),
),

Redis Cache

Redis Configuration را ببینید