حافظه پنهان
- پیکربندی
- استفاده از کش
- افزایش و کاهش
- برچسب های کش
- رویدادهای حافظه پنهان
- کش پایگاه داده
- حافظه پنهان حافظه پنهان
- Redis Cache
پیکربندی
لاراول یک 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 را ببینید