用于缓存的laravel中的清漆等效包

问题描述 投票:2回答:1

我正在努力提高Laravel应用程序的性能。谷歌搜索了一段时间后,我已经实施了一些最佳实践来提高性能。

但是现在我开始意识到我的laravel应用程序执行了很多选择查询,并且我网站上的数据不会经常更改。因此我决定实施缓存,并且我开始知道清漆是最好的用于此目的。但是开始这是一件非常复杂的事情。因此我想知道如果有等效的解决方案不像清漆那么复杂。我正在寻找一个自动缓存laravel app生成的响应的Laravel包。

php laravel caching varnish
1个回答
2
投票

您可以使用Laravel中的中间件实现兑现。这是我正在使用的中间件代码。

public function handle($request, Closure $next, $ttl=1440)
{
    if(authenticate_user() != null || $request->isMethod('post') || session()->get('success'))
        return $next($request);
    $params = $request->query(); unset($params['_method']); ksort($params);
    $key = md5(url()->current().'?'.http_build_query($params));
    if($request->get('_method')=='purge')
        Cache::forget($key);
    if(Cache::has($key)){
        $cache = Cache::get($key);
        $response = response($cache['content']);
        $response->header('X-Proxy-Cache', 'HIT');
    }
    else {
        $response = $next($request);
        if(!empty($response->content()))
            Cache::put($key,['content' => $response->content(), 'headers' => array_map(function($element){ return implode(',', $element); }, $response->headers->all())],$ttl);
        $response->header('X-Proxy-Cache', 'MISS');
    }

    return $response;
}

以下是对上述代码的解释。 Improve server performance by caching server response

© www.soinside.com 2019 - 2024. All rights reserved.