尊龙凯时人生就是博

laravel怎么做静态页面缓存

laravel是php开发者使用最普遍的框架之一 ,它具有强盛的功效和无邪的设置。当我们构建一个基于laravel的应用程序时 ,有时间我们需要缓存一些静态页面以提高网站的性能。

在本篇文章中 ,我们将演示怎样使用Laravel的缓存功效来缓存静态页面 ,从而提高应用程序的性能和响应时间。我们将实验在两个办法中完成这个使命:首先 ,我们将设置Laravel的缓存驱动程序 ,然后我们将建设一其中心件来缓存静态页面。

一、设置缓存驱动程序

Laravel支持多种缓存驱动程序 ,如Redis、Memcached、APC和文件缓存。我们可以凭证详细情形来选择适合我们的缓存驱动程序。在本例中 ,我们将使用文件缓存驱动程序来缓存静态页面。

首先 ,在config/cache.php设置文件中 ,我们需要将默认的缓存驱动程序改为文件缓存驱动程序 ,代码如下:

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

登录后复制

接下来 ,在config/cache.php设置文件中 ,我们需要指定缓存文件的存储路径 ,代码如下:

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

登录后复制

现在 ,我们已经设置了Laravel的缓存驱动程序 ,我们可以最先构建一其中心件来缓存静态页面。

二、建设缓存页面的中心件

在Laravel中 ,中心件是处理HTTP请求的一个主要组成部分。我们可以使用中心件来过滤请求、添加头信息、设置cookie等等。在本例中 ,我们将建设一其中心件来缓存静态页面。

首先 ,我们需要建设一个名为“CachePage”的中心件 ,用于缓存静态页面。我们可以使用以下下令来天生新的中心件:

php artisan make:middleware CachePage

登录后复制

当我们运行上述下令时 ,Laravel将自动建设名为“CachePage.php”的文件并将其安排在app/Http/Middleware目录中。翻开该文件 ,并在handle要领中添加以下代码:

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');
}

登录后复制

现在 ,让我们逐步诠释一下上面的代码:

我们首先检查此请求是否可以缓存。我们只需要缓存GET请求、没有任何盘问参数的请求、未经由身份验证的请求和非外地情形下的请求。

若是我们确定此请求可以缓存 ,我们就获取缓存键。在本例中 ,我们使用请求的URL作为缓存键。

然后 ,我们实验从缓存中获取此页面。若是我们能够从缓存中获取到此页面 ,则返回它并中止其它历程。

若是从缓存中获取不到页面 ,则处理请求并缓存效果。最后 ,返回处理的效果。

现在 ,在Kernel.php文件中注册这其中心件。我们将它的注册代码添加到$routeMiddleware数组中 ,代码如下:

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

登录后复制

现在 ,每当我们的应用程序处理一个匹配CachePage中心件的路由时 ,该中心件将会缓存处理效果 ,并将其存储在文件系统中。当下一次请求到来时 ,中心件将从缓存中检索页面 ,并快速返回效果。

总结

在本文中 ,我们展示了怎样使用Laravel的缓存功效来缓存静态页面。我们首先设置了Laravel的缓存驱动程序 ,然后建设了一其中心件来缓存静态页面。在整个历程中 ,我们关注了一些最佳实践和现实使用案例 ,为您演示了怎样优化您的应用程序 ,确保其最佳性能和响应时间。

以上就是laravel怎么做静态页面缓存的详细内容 ,更多请关注本网内其它相关文章!

免责说明:以上展示内容泉源于相助媒体、企业机构、网友提供或网络网络整理 ,版权争议与本站无关 ,文章涉及看法与看法不代表尊龙凯时人生就是博滤油机网官方态度 ,请读者仅做参考。本文接待转载 ,转载请说明来由。若您以为本文侵占了您的版权信息 ,或您发明该内容有任何涉及有违公德、冒犯执法等违法信息 ,请您连忙联系尊龙凯时人生就是博实时修正或删除。

相关新闻

联系尊龙凯时人生就是博

13452372176

可微信在线咨询

事情时间:周一至周五 ,9:30-18:30 ,节沐日休息

QR code
sitemap网站地图