Я распространяю PHP-скрипт, и в последнее время у многих людей возникают проблемы с кешем лака на учетных записях хостинга.
Это код в верхней части скрипта PHP. Однако я все еще получаю «Лак: HIT» в заголовках ответов (и скрипт работает неправильно).
header('Pragma: no-cache'); header('Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate, proxy-revalidate'); header('Expires: Tue, 04 Sep 2012 05:32:29 GMT');
Один хостинг-провайдер сказал, что невозможно отключить лак из PHP-скрипта, даже установив заголовки кеша, как указано выше. Это кажется .. ну .. глупо? Но, похоже, мой опыт.
Так есть способ отключить / пропустить лак из PHP? Или же лак (по умолчанию) просто игнорирует эти заголовки кэшей, установленные PHP?
Благодаря Jens-André Koch – я буду включать в себя инструкции по лакированию вместе с PHP-скриптом, чтобы он игнорировал ответы без кеша:
sub vcl_fetch { if (beresp.http.cache-control ~ "(no-cache|private)" || beresp.http.pragma ~ "no-cache") { set beresp.ttl = 0s; } }
Чтобы избежать кэширования страницы, вам необходимо настроить Varnish. Измените свой VCL, чтобы обнаружить заголовки … укажите свой собственный заголовок, чтобы отключить кеширование для вашего файла или добавить его статически как не кэшированный в конфигурацию.
Вы не можете отключить Varnish из PHP, но есть трюк, который вы можете использовать, чтобы заставить Varnish игнорировать текущую страницу. Лак не будет кэшировать страницы, где вы устанавливаете cookie, поэтому, когда вы хотите, чтобы Varnish не кэшировал определенную страницу, вы можете написать этот кусок кода:
setcookie('xx', microtime(true), time()+600, '/');
Не самое оптимальное решение, но оно отлично работает …
Вы можете отключить кэш лака, создав файл .htaccess со следующим:
Header set Cache-Control "max-age=0, private, no-cache, no-store, must-revalidate"
Насколько я понимаю ситуацию, вы можете сделать только очистку кеша:
https://www.varnish-software.com/static/book/Cache_invalidation.html