【问题标题】:varnish equivalent package in laravel for cachinglaravel 中用于缓存的清漆等效包
【发布时间】:2019-02-15 14:31:42
【问题描述】:

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

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

【问题讨论】:

    标签: php laravel caching varnish


    【解决方案1】:

    您可以在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多