Често:
Те са всички кеши .
Всички те се използват занамаляване на разходите за време .
Различно:
Конфигурации и маршрути:
Принадлежи към приложение . Наричаме го Кеш на приложението .
php artisan config:cache
php artisan route:cache
Тези две команди са кеширане на маршрути и конфигурации.
ПЪТ:
Те винаги се съхраняват в
bootstrap/cache/
Работи
php artisan config:clear
php artisan route:clear
Изчистете само директориите и файловете в bootstrap/cache/
.
Те са статични . Така че те се променят само когато ги смените.
Полза
Ако ги промените, трябва да clear
и cache
ги ръчно.
След като кеширате тези маршрути и конфигурации.
Laravel не е необходимо да чете отново конфигурациите и маршрутите от файла което отнема време за IO.
Кеш на файловата система и кеш на Redis:
Кешът на файловата система и кешът на Redis също са кеш.
Те обаче използват различен драйвер да съхранявате данните, означава къде съхранявате кешираните данни .
ПЪТ НА файловата система:Ако използвате драйвер за файлова система. те се съхраняват в
storage/framework/cache/
Reids PATH:Данните се съхраняват в
redis
по ключ-стойност.
Кога ги използвате?
Когато открихте, че има много заявки към този код за получаване на данни. И тези данни не се променят толкова бързо.
Можете да използвате кеша, за да ги съхранявате и след това, следващия път, когато друга заявка към този api. той просто вземе данни от cache.като по-долу:
$posts = Cache::remember('index.posts', 30, function()
{return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});
Първата заявка получава данните за публикациите от базата данни и след това съхранява тези данни в кеша (Reids или файлова система) изтече след 30 сек.
Следващата заявка получава данните за публикациите само чрез кеша. Няма нужда да търсят отново в бази данни.
И този:
use Illuminate\Support\Facades\Redis;
Route::get('/', function () {
$visits = Redis::incr('visits');
return $visits;
});
Означава, когато хората искат localhost:8000/
, броят на посещенията на потребителите се увеличава в redis
(не е необходимо да се съхранява в база данни, струва повече време), следващия път, когато заявката за търсене брои посещения, може да се намери в redis
много бързо.
PS:Тук използвайте Redis Facade, след което данните се съхраняват в
redis
.Ако използвате redis като драйвер за кеш,
Cache::remember()
ще съхранява данни и в redis.Въпреки това, като използвате Redis Facade, можете да използвате много методи на Redis.
Кое е по-добро?
Мисля, че redis
е по-добре от filesystem
.
-
Тъй като
redis
съхранява данни в паметта, а файловата система - на диск. Четенето на данни от паметта е по-бързо отколкото диск. -
Работа данните в Redis епо-лесно отколкото файловата система. Например Redis поддържа изчистване на целия кеш за конкретен маркер, но файловата система не може [Защото файловата система съхранява кеш данни чрез името на криптиран ключ].
-
Заразпространено сървър, кешът на файловата система е лоша идея. По-ниско съотношение на попадане в кеша.
Честно казано, има и други драйвери, които могат да бъдат избрани, като mongodb
.
Между другото, английският ми не е много добър, надявам се, че разбирате.