W3 Total Cache, CDN и файлы тем [закрыто]

10

Я недавно обновил файл style.css моей установки WordPress. Изменения вступили в силу: когда я вошел в систему как администратор (мой блог настроен так, что администратор никогда не обслуживает кэшированную версию сайта, кроме «живой»), я вижу их.

Но мой блог обслуживается через CDN (с использованием W3 Total Cache). Через CDN изменения не вступают в силу: CDN не обслуживает измененные файлы из моей темы. Несмотря на то, что я загрузил их после модификации (Dashboard> Performance> CDN> Upload the theme files.

Мой CDN работает на AmazonCloud Front. И Minify отключен на W3 Total Cache.

Файл темы, обслуживаемый через мой CDN, является сжатой версией: style.css.gzip

Должен ли я «удалить» объекты из моего CDN или подождать немного больше (прошло больше недели). И да, я очищаю кеш браузера, который использую, чтобы изменения вступили в силу. Или я что-то пропустил?

Спасибо,

П.

Parneix
источник

Ответы:

10

Вам нужно либо

  1. Сделайте версию ваших файлов (вызвав ее style.css?ver=xxx.xxx) и убедитесь, что в вашем дистрибутиве CloudFront включены «Строки прямого запроса». Это лучший вариант, так как все, что вам нужно сделать, это увеличить число в строке запроса, и CloudFront автоматически получит этот файл.

  2. Вручную аннулируйте ваши файлы через Консоль AWS (при редактировании дистрибутива имеется вкладка аннулирования)

Чтобы включить «Переслать строки запроса», выполните следующие действия:

  • Отредактируйте ваш дистрибутив Cloudfront, установив флажок слева от «i», а затем нажмите кнопку «Настройки распространения» на панели инструментов
  • Перейти на вкладку Поведения
  • Выберите строку и нажмите «Изменить»
  • Измените "строки запроса вперед" на Да
  • Нажмите «Да, Изменить»
ана
источник
1
@kaiser yup, datetime как версия - лучший способ создания версий файла. Однако вам все равно нужно убедиться, что в CloudFront включен параметр «Переслать строки запроса», в противном случае ваш красиво созданный номер версии будет проигнорирован: P
anu
Спасибо. У меня к вам два вопроса, так как я не знаком с этой процедурой. 1) Название «версионных» файлов должно в точности соответствовать тому примеру, который вы привели (со знаком вопроса, знаками равенства и заменить все «х» числами на мой выбор), верно? 2) На консоли AWS для CLoudFront я нажимаю «I» в левой части таблицы рядом с дистрибутивом, который я создал для своего блога. Это позволяет мне получить доступ к настройкам дистрибутива. Там я вижу, что «строки прямого запроса» - «ложь». Должен ли я повторить это «поведение» с теми же значениями, но с «true» для «For. Q. strings»
Parneix
1
1. да или вы можете использовать @ kaiser в хорошем смысле, но не полный ответ, чтобы назвать ваш файл. 2. Я обновлю ответ с процессом
ан
8

Существует довольно простая «хитрость» для предотвращения кеширования при изменении содержимого файла: добавьте номер версии, который установлен на самую последнюю дату / время, когда вы изменили свой файл.

add_action( 'wp_enqueue_scripts', 'wpse61738_non_cached_stylesheet' );
function wpse61738_non_cached_stylesheet()
{
    wp_enqueue_style( 
        'style-main',
        get_stylesheet_directory_uri().'/style.css',
        array(),
        filemtime( get_stylesheet_directory().'/style.css' )
    );
}

Это добавит ?ver=0123456789вашу ссылку на style.css в ваш заголовок. Номер версии будет меняться только при изменении содержимого файлов. Таким образом, у вас есть решение, которое идеально работает с: а) кешем на стороне сервера б) кешем браузера и автоматически обновляется.

кайзер
источник
Хорошо, это действительно интересный вариант: он устраняет необходимость вручную проверять версии моего style.cssфайла после каждой модификации (что я забуду сделать в тот или иной момент). Теперь, если я могу спросить, где я могу добавить этот код? Я бы догадался в моем functions.phpфайле?
Parneix
Я не знаю, где вам нужно добавить этот код. Просто выполните поиск по файлам тем и замените «обычный» вызов файла style.css. Я опубликую краткое обновление, чтобы вы могли поместить его в свой файл functions.php (это по-прежнему означает, что вам нужно удалить исходный вызов). И кстати: это только дополнение к ответу @anu. (Upvotes еще оценили :)
Кайзер
1
Нет проблем! Я прекрасно понимаю, что расположение этого кода может меняться в зависимости от используемой темы. Мне удастся добавить его в мой functions.phpфайл. Я все еще думаю, что это хорошее дополнение к решению, предоставленному @anu. Большое спасибо за помощь.
Parneix
-1

краткий ответ ...

  1. Удалите все ваши файлы темы и повторно загрузите их. несколько раз действие удаления очищает CDN

  2. Да, вы можете попробовать очистить, но удаление и повторная загрузка обычно выполняются быстрее.

  3. Также проверьте настройки в W3TC и в Amazon. Кэш по умолчанию в W3TC обычно составляет 365 дней. что составляет 31536000 секунд :)

В Amazon .. будет настройка для конечных точек для повторного запроса CDN. я знаю в Rackspace по умолчанию это 24 часа.

Damien
источник
1
Есть гораздо более эффективные способы сделать это , чем это, увидеть мой ответ
Ану
«Удалите все ваши файлы темы и повторно загрузите их. Иногда действие «Удалить» очищает CDN ». Вы хотите, чтобы я удалил их на моем веб-сайте, верно? Затем заново загрузите их в мою установку WordPress. А потом, я думаю, снова сделать «Загрузить файлы темы» через панель мониторинга W3 Total Cache?
Parneix
1
@Parneix серьезно, не удаляйте все, если вам не нужно. Это почти наверняка не сработает, если вы не удалите все из CDN. Есть НАМНОГО лучших способов сделать ваш устаревший файл CSS недействительным
anu
1
Да, спасибо! Я принял к сведению ваше предложение. Я действительно ценю всю помощь, которую я получаю здесь. Я не только решаю свою проблему, но и изучаю новые вещи.
Parneix