Предварительная загрузка промежуточного ПО / кеша ответов в Laravel? - PullRequest
0 голосов
/ 06 мая 2020
• 1000 предварительно установите его, прежде чем любой пользователь испытает время загрузки.

Однако я не совсем уверен, как go об этом, учитывая, что я устанавливаю значение кеша как закрытие - $next($request). По сути, он кэширует фактический сериализованный ответ.

Есть ли для меня простой способ смоделировать этот ответ программно?

Изменить : чтобы уточнить - вышеуказанная функциональность работает хорошо, я бы хотел примерно следующее:

public function resetCache($key)
{
    // Clear out old cache:
    cache()->forget($key);

    // Preload new cache:
    cache()->set($key, function ($request, $next) {
        return $next($request);
    });
}

Очевидно, что указанная выше функция не будет работать, поскольку у меня нет контекста для $request или $next.

I Я начинаю думать, что поступаю неправильно, по сути.

1 Ответ

0 голосов
/ 06 мая 2020

Попробуйте следующее:

public function handle($request, Closure $next)
{
    $domain = parse_url($request->headers->get('origin'), PHP_URL_HOST);
    $key = 'request|'.$domain.'|dashboard';
    $response = $next($request);
    if($response !== Cache:get($key)) {
        Cache:forget($key);
    }

    return cache()->rememberForever($key, function () use ($reponse) {
        return $response;
    });
}
...