W3 Total Cache, CDN i pliki motywów [zamknięte]

10

Ostatnio zaktualizowałem plik style.css mojej instalacji WordPress. Zmiana była skuteczna: po zalogowaniu się jako administrator (mój blog jest ustawiony w taki sposób, że administratorowi nigdy nie wyświetla się wersja strony z pamięci podręcznej, ale wersja „na żywo”), widzę je.

Ale mój blog jest obsługiwany przez CDN (przy użyciu W3 Total Cache). Za pośrednictwem CDN zmiany nie są skuteczne: CDN nie obsługuje zmodyfikowanych plików z mojego motywu. Mimo że przesłałem je po modyfikacji (Pulpit nawigacyjny> Wydajność> CDN> Prześlij pliki motywów.

Mój CDN działa na AmazonCloud Front. Funkcja Minify jest wyłączona w W3 Total Cache.

Plik motywu obsługiwany przez mój CDN jest wersją skompresowaną: style.css.gzip

Czy powinienem „usunąć” obiekty z mojego CDN, czy też poczekać trochę dłużej (minął już ponad tydzień). I tak, opróżniam pamięć podręczną przeglądarki, której używam, aby zobaczyć, że zmiany wchodzą w życie. A może brakuje mi czegoś jeszcze?

Dzięki,

P.

Parneix
źródło

Odpowiedzi:

10

Musisz albo

  1. Wersja plików (przez wywołanie style.css?ver=xxx.xxx) i upewnij się, że Twoja dystrybucja CloudFront ma włączoną opcję „Ciąg zapytania”. Jest to lepsza opcja, ponieważ oznacza, że ​​wystarczy zwiększyć liczbę w ciągu zapytania, a CloudFront automatycznie pobierze ten plik.

  2. Ręcznie unieważnij swoje pliki za pomocą konsoli AWS (podczas edytowania dystrybucji znajduje się karta unieważnienia)

Aby włączyć „Forward Query Strings”, wykonaj następujące czynności:

  • Edytuj dystrybucję Cloudfront, zaznaczając pole wyboru po lewej stronie „i”, a następnie kliknij przycisk „Ustawienia dystrybucji” na pasku narzędzi
  • Przejdź do zakładki Zachowania
  • Wybierz linię i kliknij „Edytuj”
  • Zmień „ciągi zapytania do przodu” na Tak
  • Kliknij „Tak, edytuj”
anu
źródło
1
@kaiser, data i godzina jako wersja to najlepszy sposób na wersjonowanie pliku. Jednak nadal musisz upewnić się, że opcja „Forward Query Strings” jest włączona w CloudFront, w przeciwnym razie twój ładnie spreparowany numer wersji zostanie zignorowany: P
anu
Dziękuję Ci. Mam do ciebie dwa pytania, ponieważ nie znam tej procedury. 1) Nazwa plików „wersjonowanych” powinna być dokładnie taka sama, jak podany przykład (ze znakiem zapytania, znakami równości i zastąpić wszystkie „x” liczbami mojego wyboru), prawda? 2) Na mojej konsoli AWS dla CLoudFront klikam „ja” po lewej stronie tabeli obok dystrybucji, którą utworzyłem dla mojego bloga. To pozwala mi uzyskać dostęp do ustawień dystrybucji. Widzę tam, że „Ciągi zapytania do przodu” to „fałsz”. Czy powinienem powtórzyć to „zachowanie” z tymi samymi wartościami, ale z „true” dla „For. Q. strings”
Parneix,
1
1. tak lub możesz użyć dobrego znaczenia @ kaiser, ale niepełnej odpowiedzi, aby nazwać swój plik. 2. Będę aktualizować odpowiedź z procesem
Anu
8

Istnieje dość „sztuczka”, aby zapobiec buforowaniu w przypadku zmiany zawartości pliku: Dodaj numer wersji, który jest ustawiony na najnowszą datę / czas, kiedy zmieniłeś plik.

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' )
    );
}

To zostanie dołączone ?ver=0123456789do linku referencyjnego style.css w nagłówku. Numer wersji zmieni się tylko wtedy, gdy zawartość plików zostanie zmodyfikowana. Masz więc rozwiązanie, które działa idealnie z a) pamięcią podręczną po stronie serwera b) pamięcią podręczną przeglądarki i odświeża się automatycznie.

kajzer
źródło
Ok, to naprawdę interesująca opcja: eliminuje potrzebę ręcznego wersjonowania mojego style.csspliku po każdej modyfikacji (czego w pewnym momencie zapomnę zrobić). Teraz, jeśli mogę zapytać, gdzie mam dodać ten kod? Zgadłbym do mojego functions.phppliku?
Parneix,
Nie wiem, gdzie musisz dodać ten kod. Wystarczy przeszukać pliki motywów i zastąpić „normalne” wywołanie plikiem style.css. Opublikuję krótką aktualizację, abyś mógł umieścić ją w pliku functions.php (nadal oznacza to, że musisz usunąć oryginalne wywołanie). I btw: To tylko dodatek do odpowiedzi @anu. (Pozytywne opinie są nadal mile widziane :)
Kaiser
1
Nie ma problemu! Doskonale rozumiem, że lokalizacja tego kodu może się zmienić w zależności od zastosowanego motywu. Dołożę dodać to do mojego functions.phppliku. Nadal uważam, że jest to dobre uzupełnienie rozwiązania dostarczonego przez @anu. Wielkie dzięki za pomoc.
Parneix,
-1

krótka odpowiedź ...

  1. Usuń wszystkie pliki motywów i prześlij je ponownie. czasami operacja usuwania usuwa CDN

  2. Tak, możesz spróbować Wyczyść - ale usuwanie i ponowne przesyłanie jest zwykle szybsze.

  3. Sprawdź także ustawienia w W3TC i Amazon. Domyślna pamięć podręczna dla W3TC wynosi zwykle 365 dni. czyli 31536000 sekund :)

W Amazon .. będzie ustawienie dla punktów końcowych w celu ponownego zapytania CDN. wiem, że w Rackspace domyślnie jest to 24 godziny.

Damien
źródło
1
Są znacznie lepsze sposoby robienia, niż ten, zobacz moją odpowiedź
Anu
„Usuń wszystkie pliki motywów i prześlij je ponownie. czasami operacja usuwania usuwa CDN ”. Masz na myśli, żebym je usunął z mojej witryny, prawda? Następnie prześlij je ponownie w mojej instalacji WordPress. A potem myślę, że „Prześlij pliki motywów” ponownie przez pulpit nawigacyjny W3 Total Cache?
Parneix,
1
@Parneix poważnie, nie usuwaj wszystkiego, chyba że musisz. Prawie na pewno nie zadziała, chyba że usuniesz również wszystko z CDN. Są znacznie lepsze sposoby unieważniania swoją nieświeże plik CSS
Anu
1
Tak, dziękuję! Zanotowałem dobrze twoją sugestię. Naprawdę doceniam całą pomoc, którą tu otrzymuję. Nie tylko rozwiązuję swój problem, ale także uczę się nowych rzeczy.
Parneix,