1 Востаннє редагувалося karmeljuk (21.02.2018 16:19:44)

Тема: Проблеми з кешуванням

Всім привіт

Маю один сайт на WordPress який потрібно оптимізувати. Також там класичний ланцюг оточень:
local -> demo ->  develop -> production

Всюди один і той же код заливається через git, відрізніється лиш трішки база залежно від середовища. Але от на стадії develop я маю проблеми з кешами, сторінки неймовірно закешовані. Для body cache-control:max-age=2591949 що рівно цілому місяцю. На всіх інших стадіях max-age 0 або 3 секунди

Питання наступне: де може задаватися цей параметр cache-control і як він може відрізнятися, якщо код ідентичний на всіх стадіях? Спасибі

2

Re: Проблеми з кешуванням

В налаштуваннях Apache, наприклад.

3 Востаннє редагувалося leofun01 (21.02.2018 01:23:54)

Re: Проблеми з кешуванням

Можна використати WordPress'івську функцію nocache_headers. Викликається до того, як буде відправлено тіло http-відповіді :

<?php nocache_headers(); ?>

Можна використати PHP функцію header. Приклад :

<?php
    header('Cache-Control: max-age=2'); // бро може зберігати відповідь в кеші не більше ніж 2 секунди.
//  header('Cache-Control: no-cache'); // бро може зберігати відповідь в кеші, але завжди відправляє запит для перевірки.
//  header('Cache-Control: no-store'); // бро змушений кожного разу запитувати сервер замість того щоб витягати з кешу.
    // бро == бовзер
?>

Відкривайте посилання відповідно до того, що використовується:
Nginx
Apache mod_expires, mod_cache, mod_headers, mod_mime
PHP + header() (w3schools -> Example 1)

Поля в заголовках (може бути корисно) :
rfc2616 (Cache-Control)
rfc7234 (Cache-Control Directives)
rfc2616 (Expires)
rfc7232 (ETag)
rfc7231 (Vary)

4 Востаннє редагувалося karmeljuk (21.02.2018 16:24:38)

Re: Проблеми з кешуванням

Щиро дякую всім за допомогу
В якості сервера стоїть apache. Разом з цим для кешування використовуєтся Akamai, в якому задані значення для різних середовищ

У файлі .htaccess є рядок, котрий змушує сторінки кешувати цілий місяць

<IfModule mod_expires.c>
ExpiresDefault 'access 1 month'
</IfModule>

Власне це і є ті самі 2591949 секунд, котрі я бачив в заголовках сторінки