Лак 4, кеш страницы с печеньем

Я хочу кэшировать каждую страницу (даже с файлами cookie), серверная часть в php для этого не подготовлена, поэтому она отправляет несколько заголовков Set-Cookie. Когда я удаляю все функции session_start и setcookie, страница высвечивается, но когда я настраиваю свой vcl для лака, делаю это автоматически для меня, страница всегда пропускает.

Вот мой default.vcl:

vcl 4.0;

backend default {
.host = "myhost.app";
.port = "80";
}

sub vcl_recv {
unset req.http.cookie;
}

sub vcl_backend_response {
unset beresp.http.set-cookie;
}

sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}

0

Решение

Кажется, вы идете в мутную воду, но попробуйте заставить ttl:

sub vcl_backend_response {
set beresp.ttl = 120 s;
unset beresp.http.set-cookie;
}

Убедитесь, что вы ничего не нарушаете, кэшируя игнорируя куки и ттл.

1

Другие решения

Я тоже каждый раз сталкивался с кешем MISS и обновлял sub vcl_backend_response{..} как упомянул Хорхе Нерин. Сейчас показывался кеш HIT, но входа в систему не происходило. Это было очевидно из-за unset beresp.http.set-cookie;, Итак, я понял Обработка заголовков запросов в VCL удалить cookie на основе URL. Я применил то же самое вvcl_backend_response, В моем приложении логин URL содержит auth, Поэтому я обновил до unset beresp.http.set-cookie; везде, кроме случаев, когда URL содержат auth, Теперь происходит вход в систему, а также кэш ХИТ. Надеюсь, это поможет сообществу

sub vcl_backend_response {
set beresp.ttl = 120 s;
if ((bereq.url ~ "auth")){
}
else{
unset beresp.http.set-cookie;
}
#rest of code
}
0

По вопросам рекламы [email protected]