2016-08-03 13 views
0

Ich bin gerade nach Laravel vor ein paar Tagen umgezogen, also bin ich noch neu in diesem Rahmen ... Ich habe statische HTML-Seiten in der Datenbank gespeichert (eine große Anzahl von Seiten) und Besucher können Fordern Sie diese Seiten an, indem Sie die entsprechende URL eingeben. Ich möchte die Performance verbessern, indem ich sie zwischenspeichere. Was ist der beste Weg, das in Laravel zu machen? und wie die zwischengespeicherte Seite entfernt wird, wenn sie aus der Datenbank entfernt wird?Caching statische Seiten aus der Datenbank

Antwort

1

Laravel eine einheitliche API für verschiedene Caching bietet Systeme sein könnte.

I empfehlen dringend, um einen Blick auf die Dokumentation zu werfen.

Laravel Cache Documentation

Sie könnten die Seiten-Cache für immer, und wenn man sie rufen Sie in Cache forget() Methode löschen

abzurufen oder aktualisieren

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

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

Shop

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

aus dem Cache löschen

Cache::forget('key'); 
+0

danke für die ausführliche Antwort, wenn ich die Seite in der Datenbank bearbeiten kann ich auch den Cache aktualisieren? Ich sehe auch eine Menge Methoden zum Caching (Redis, Memcache etc ...) welche ist gut in meiner Situation? – medBo

+0

Sie sind '' 'Treiber'''. Sie können lokal oder im Speicher Schlüssel/Wert speichern (memcached) zwischenspeichern. Das hängt von dir ab. Lesen Sie über sie und sehen Sie, was das Beste für Sie ist. – xdevnull

+0

danke! Wie aktualisiert man den Cache, wenn die Seite bearbeitet wird? – medBo

1
namespace App; 

use Illuminate\Database\Eloquent\Model; 
use Cache; 
use Carbon\Carbon; 


class Page extends Model 
{ 
    public function getPage($url) 
    { 
     if (Cache::has($url)) 
     { 
      $page = Cache::get($url); 
     } 
     else { 
      $page = self::where(['confirm'=> 1, 'url'=> $url])->first(); 
      $expiresAt = Carbon::now()->addHours(12); 
      Cache::put($url, $page, $expiresAt); 
     } 

     return $page; 

    } 
} 

Очиска кеша:

Cache::flush(); 
+0

@IIyaYaremchuk Wie kann ich einen bestimmten Cache aktualisieren, wenn eine Seite in der Datenbank bearbeitet wird? – medBo

+0

@medBo Cache :: put ($ url, $ page, $ expiresAt); –

+0

@IIyaYaremchuk wird dies den Cache aktualisieren, wenn es bereits existiert? – medBo