Almindelig:
De er alle cache .
De bruges alle til at reducere tidsomkostninger .
Differenet:
Konfigurationer og ruter:
Det hører til applikationen . Vi kalder det Applikationscache .
php artisan config:cache
php artisan route:cache
Disse to kommandoer cachelagrer ruter og konfigurationer.
STI:
De er altid gemt i bootstrap/cache/
Kører
php artisan config:clear
php artisan route:clear
Ryd kun mapperne og filerne i bootstrap/cache/
.
De er statiske . Så de ændres kun, når du ændrer dem.
Fordel
Hvis du ændrer dem, skal du clear
og cache
dem manuelt.
Når du har kontrolleret disse ruter og konfigurationer.
Laravel behøver ikke at læse konfigurationerne og ruterne fra filen igen hvilket tog IO tidsomkostninger.
Filsystem-cache og Redis-cache:
Filsystem-cache og Redis-cache er også begge cache.
De bruger dog anden driver at gemme dataene, betyder hvor du gemmer cachedataene .
Filsystem PATH:Hvis du bruger filsystemdriver. de er gemt i storage/framework/cache/
Reids PATH:Data lagres i redis
efter nøgleværdi.
Hvornår bruger du dem?
Da du fandt ud af, at der er mange anmodninger om denne kode for at få data. Og disse data ændres ikke så hurtigt.
Du kan bruge cache til at gemme dem, og derefter, næste gang en anden anmodning til dette api.it bare tage data fra cache.like nedenfor:
$posts = Cache::remember('index.posts', 30, function()
{return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});
Den første anmodning henter indlæggenes data fra databasen, og gem derefter disse data i cache (Reids eller Filsystem) udløb efter 30 sek.
Næste anmodning få posts data kun gennem cache. De behøver ikke at søge i databaser igen.
Og denne:
use Illuminate\Support\Facades\Redis;
Route::get('/', function () {
$visits = Redis::incr('visits');
return $visits;
});
Betyder, når folk anmoder om localhost:8000/
, brugernes besøgstal stiger i redis
(behøver ikke at gemme i databasen, det koster mere tid), næste gang, når anmodningen om at søge besøg tæller, kan den findes i redis
meget hurtigt.
PS:Brug her Redis Facade, så gemmes dataene i redis
.
Hvis du bruger redis som cache-driver, Cache::remember()
vil også gemme data i redis.
Men ved at bruge Redis Facade kan du bruge mange redis-metoder.
Hvilken er bedre?
Jeg tror redis
er bedre end filesystem
.
-
Fordi
redis
gem data i hukommelsen, og filsystem gemmer på disk. Læsning af data fra hukommelsen er hurtigere end disk. -
Betjene data i Redis er lettere end filsystem. Redis understøtter f.eks. at rydde al cache for et specifikt tag, men filsystemet kan ikke[Fordi filsystemet gemmer cachedata efter krypterede nøglenavn].
-
Til distribueret server, er filsystemcache en dårlig idé. Lavere cache hit ratio.
Helt ærligt, der er andre drivere, der kan vælges, såsom mongodb
.
Mit engelsk er i øvrigt ikke særlig godt, håber du forstår.