W3 загальний кеш, CDN та файли тем [закрито]


10

Нещодавно я оновив файл style.css моєї установки WordPress. Зміни були ефективними: коли я ввійшов як адміністратор (мій блог встановлений так, що адміністратору ніколи не надається кешована версія сайту, а "жива"), я їх бачу.

Але мій блог подається через CDN (використовуючи W3 Total Cache). Через CDN зміни не є ефективними: CDN не обслуговує модифіковані файли з моєї теми. Навіть незважаючи на те, що я завантажив їх після зміни (Інформаційна панель> Ефективність> CDN> Завантажити файли тем.

Мій CDN працює на AmazonCloud Front. І Minify відключений у W3 Total Cache.

Файл теми, який подається через мій CDN, - це стисла версія: style.css.gzip

Чи слід «очищати» предмети з мого CDN або зачекати ще трохи (минуло більше тижня). І так, я спорожняю кеш браузера, який використовую, щоб побачити, як зміни набувають чинності. Або ще щось мені не вистачає?

Дякую,

П.

Відповіді:


10

Вам потрібно будь-яке

  1. Версія ваших файлів (зателефонувавши до неї style.css?ver=xxx.xxx) та переконайтесь, що у вашому дистрибутиві CloudFront увімкнено "Напрямки запиту рядків". Це кращий варіант, оскільки це означає, що все, що вам потрібно зробити, це збільшити число в рядку запиту, і CloudFront автоматично отримає цей файл.

  2. Вручну недійсні ваші файли через консоль AWS (є вкладка недійсності під час редагування розповсюдження)

Щоб увімкнути "Надіслати рядки запитів", виконайте наступне:

  • Відредагуйте дистрибутив Cloudfront, поставивши галочку в лівій частині поля "i" та натисніть кнопку "Налаштування розповсюдження" на панелі інструментів
  • Перейдіть на вкладку Поведінки
  • Виберіть рядок і натисніть "Редагувати"
  • Змініть "рядки запиту вперед" на Так
  • Натисніть "Так, редагувати"

1
@kaiser yup, дата, як версія, є найкращим способом версії файлу. Однак вам все-таки потрібно переконатися, що в CloudFront увімкнено параметр "Надіслати рядки запитів", інакше ваш прекрасно створений номер версії буде проігноровано: P
anu

Дякую. У мене є два питання до вас, оскільки я не знайомий з цією процедурою. 1) Ім'я файлів "версія" має відповідати саме тому прикладу, який ви подали (зі знаком питання, знаками рівності та замініть всі "х" цифрами на мій вибір) правда? 2) На моїй консолі AWS для CLoudFront я натискаю "Я" в лівій частині таблиці поруч з дистрибутивом, створеним для свого блогу. Це дозволяє мені отримати доступ до налаштувань дистрибутива. Там я бачу, що "рядки запиту вперед" є "помилковими". Чи слід повторювати цю поведінку з тими ж значеннями, але з "true" для "Для.
Р.

1
1. так, або ви можете скористатися значущим, але неповним відповіддю, щоб назвати свій файл. 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файлі?
Парней

Я не знаю, куди потрібно додати цей код. Просто перегляньте файли тем і замініть "звичайний" виклик на файл style.css. Я опублікую коротке оновлення, тож ви можете помістити його у свій файл function.php (це все ще означає, що вам потрібно видалити початковий виклик). І btw: Це лише доповнення до відповіді @anu. (Обновлення все ще цінують :)
кайзер

1
Нема проблем! Я прекрасно розумію, що розташування цього коду, ймовірно, змінюватиметься залежно від використовуваної теми. Мені вдасться додати його до свого functions.phpфайлу. Я все ще думаю, що це гарне доповнення до рішення, яке надає @anu. Велике спасибі за допомогу.
Парней

-1

коротка відповідь ...

  1. Видаліть усі файли тем і повторно завантажте їх. інколи дія видалення очищає CDN

  2. Так, ви можете спробувати Purge - але Видалити та повторно завантажити зазвичай швидше.

  3. Ознайомтесь також із параметрами в W3TC та в Amazon. Кеш-пам'ять у W3TC за замовчуванням зазвичай становить 365 днів. що становить 31536000 секунд :)

В Amazon .. буде встановлено кінцеві точки для повторного запиту CDN. Я знаю, що в Rackspace за замовчуванням - 24 години.


1
Є набагато кращі способи зробити це, ніж це, дивіться мою відповідь
ану

"Видаліть усі файли тем і повторно завантажте їх. іноді дія видалення очищає CDN "Ви маєте на увазі для мене видалення їх на своєму веб-сайті, правда? Потім повторно завантажте їх у мою установку WordPress. І тоді я здогадуюсь, чи "Завантажте файли тем" знову через приладну панель W3 Total Cache?
Парней

1
@Parneix серйозно, не видаляйте все, якщо вам не доведеться. Це майже точно не буде працювати, якщо ви також не видалите все з CDN. Є набагато більш ефективні способи недійсності свій черствий CSS файл
Ану

1
Так дякую! Я добре взяв до уваги вашу пропозицію. Я дуже ціную всю допомогу, яку я отримую тут. Я не тільки вирішую свою проблему, але й вивчаю нові речі.
Парней
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.