Heim >PHP-Framework >Laravel >So zwischenspeichern Sie statische Seiten in Laravel

So zwischenspeichern Sie statische Seiten in Laravel

PHPz
PHPzOriginal
2023-04-23 09:18:061091Durchsuche

Laravel ist eines der von PHP-Entwicklern am häufigsten verwendeten Frameworks mit leistungsstarken Funktionen und flexibler Konfiguration. Wenn wir eine Laravel-basierte Anwendung erstellen, müssen wir manchmal einige statische Seiten zwischenspeichern, um die Leistung der Website zu verbessern.

In diesem Artikel zeigen wir, wie Sie die Caching-Funktion von Laravel verwenden, um statische Seiten zwischenzuspeichern und so die Leistung und Reaktionszeit Ihrer Anwendung zu verbessern. Wir werden versuchen, diese Aufgabe in zwei Schritten zu erledigen: Zuerst konfigurieren wir den Cache-Treiber von Laravel und dann erstellen wir eine Middleware zum Zwischenspeichern statischer Seiten.

1. Cache-Treiber konfigurieren

Laravel unterstützt eine Vielzahl von Cache-Treibern, wie Redis, Memcached, APC und Datei-Cache. Wir können je nach Situation den für uns passenden Cache-Treiber auswählen. In diesem Beispiel verwenden wir den Datei-Cache-Treiber, um statische Seiten zwischenzuspeichern.

Zuerst müssen wir in der Konfigurationsdatei config/cache.php den Standard-Cache-Treiber in den Datei-Cache-Treiber ändern. Der Code lautet wie folgt:

'default' => env('CACHE_DRIVER', 'file'),

Als nächstes müssen wir in der Konfigurationsdatei config/cache.php brauchen Geben Sie den Speicherpfad der Cache-Datei an. Der Code lautet wie folgt:

'path' => storage_path('framework/cache/data'),

Nachdem wir nun den Cache-Treiber von Laravel konfiguriert haben, können wir mit dem Aufbau einer Middleware zum Zwischenspeichern statischer Seiten beginnen.

2. Middleware für das Caching von Seiten erstellen

In Laravel ist Middleware ein wichtiger Bestandteil der Verarbeitung von HTTP-Anfragen. Wir können Middleware verwenden, um Anfragen zu filtern, Header-Informationen hinzuzufügen, Cookies zu setzen und mehr. In diesem Beispiel erstellen wir eine Middleware zum Zwischenspeichern statischer Seiten.

Zuerst müssen wir eine Middleware namens „CachePage“ zum Zwischenspeichern statischer Seiten erstellen. Wir können den folgenden Befehl verwenden, um neue Middleware zu generieren:

php artisan make:middleware CachePage

Wenn wir den obigen Befehl ausführen, erstellt Laravel automatisch eine Datei mit dem Namen „CachePage.php“ und legt sie im Verzeichnis app/Http/Middleware ab. Öffnen Sie die Datei und fügen Sie den folgenden Code in die Handle-Methode ein:

public function handle($request, Closure $next)
{
    // 检查此请求是否可以缓存
    if (! $this->shouldCache($request)) {
        return $next($request);
    }

    // 获取此请求的缓存键
    $key = $this->getCacheKey($request);

    // 尝试从缓存中获取此请求的页面
    if (Cache::has($key)) {
        return response(Cache::get($key));
    }

    // 如果没有从缓存中获取到,那么就处理请求并将结果缓存下来
    $response = $next($request);
    if ($this->shouldCacheResponse($response)) {
        Cache::put($key, $response->getContent(), $this->getCacheLifetime());
    }

    return $response;
}

// 检查此请求是否可以缓存
protected function shouldCache($request)
{
    if (!$request->isMethod('get')) {
        return false;
    }

    if ($request->query->count()) {
        return false;
    }

    if (auth()->check()) {
        return false;
    }

    if (config('app.env') === 'local') {
        return false;
    }

    return true;
}

// 获取此请求的缓存键
protected function getCacheKey($request)
{
    return 'cache:' . $request->url();
}

// 检查此请求的响应是否可以缓存
protected function shouldCacheResponse($response)
{
    return $response->status() === 200;
}

// 获取页面缓存的生存时间
protected function getCacheLifetime()
{
    return config('cache.page_cache_lifetime');
}

Lassen Sie uns nun den obigen Code Schritt für Schritt erklären:

  • Wir prüfen zunächst, ob diese Anfrage zwischengespeichert werden kann. Wir müssen nur GET-Anfragen, Anfragen ohne Abfrageparameter, nicht authentifizierte Anfragen und Anfragen in nicht lokalen Umgebungen zwischenspeichern.
  • Wenn wir feststellen, dass diese Anfrage zwischengespeichert werden kann, erhalten wir den Cache-Schlüssel. In diesem Beispiel verwenden wir die angeforderte URL als Cache-Schlüssel.
  • Dann versuchen wir, diese Seite aus dem Cache zu holen. Wenn wir die Seite aus dem Cache abrufen können, geben wir sie zurück und brechen andere Prozesse ab.
  • Wenn die Seite nicht aus dem Cache abgerufen werden kann, verarbeiten Sie die Anfrage und speichern Sie das Ergebnis im Cache. Abschließend werden die Verarbeitungsergebnisse zurückgegeben.

Jetzt registrieren Sie diese Middleware in der Datei Kernel.php. Wir fügen seinen Registrierungscode zum $routeMiddleware-Array hinzu. Der Code lautet wie folgt:

'cache.page' => \App\Http\Middleware\CachePage::class,

Sobald unsere Anwendung eine Route verarbeitet, die mit der CachePage-Middleware übereinstimmt, speichert die Middleware die Verarbeitungsergebnisse zwischen und speichert sie im Dateisystem. Wenn die nächste Anfrage eintrifft, ruft die Middleware die Seite aus dem Cache ab und gibt die Ergebnisse schnell zurück.

Zusammenfassung

In diesem Artikel haben wir gezeigt, wie man statische Seiten mithilfe der Caching-Funktionalität von Laravel zwischenspeichert. Wir haben zunächst den Cache-Treiber von Laravel konfiguriert und dann eine Middleware zum Zwischenspeichern statischer Seiten erstellt. Während des gesamten Prozesses konzentrieren wir uns auf einige Best Practices und Anwendungsfälle aus der Praxis, um Ihnen zu zeigen, wie Sie Ihre Anwendung optimieren können, um eine optimale Leistung und Reaktionszeit sicherzustellen.

Das obige ist der detaillierte Inhalt vonSo zwischenspeichern Sie statische Seiten in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn