лаковая эквивалентная упаковка в Laravel для кеширования - PullRequest
0 голосов
/ 11 сентября 2018

Я на пути к повышению производительности моего приложения Laravel. После некоторого поиска в Google я реализовал некоторые из лучших практик для повышения производительности.

Но теперь я понял, что мое приложение laravel выполняет много запросов на выборку, и данные на моем сайте меняются не так часто. Поэтому я решил внедрить кеширование и узнал, что для этой цели лучше всего подходит лак. Но это довольно сложная вещь для начала. Поэтому я хочу знать, если есть эквивалентное решение, которое не так сложно, как лак. Я ищу пакет Laravel, который автоматически кэширует ответ, сгенерированный приложением laravel.

1 Ответ

0 голосов
/ 11 сентября 2018

Вы можете реализовать обналичивание с помощью промежуточного программного обеспечения в 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;
}

Вот объяснение приведенного выше кода. Повышение производительности сервера за счет кэширования ответа сервера

...