Używam nginx jako serwera frontowego, zmodyfikowałem pliki CSS, ale nginx nadal obsługuje stare.
Próbowałem zrestartować nginx, ale bez skutku i przejrzałem Google, ale nie znalazłem prawidłowego sposobu na jego usunięcie.
Niektóre artykuły mówią, że możemy po prostu usunąć katalog pamięci podręcznej:, var/cache/nginx
ale takiego katalogu nie ma na moim serwerze.
Co mam teraz zrobić?
proxy_cache
?cache
, ale nie znalazłem go w plikach konfiguracyjnychOdpowiedzi:
Miałem dokładnie ten sam problem - działałem z moim nginx w Virtualbox. Nie miałem włączonego buforowania. Ale wygląda jak
sendfile
został ustawionyon
wnginx.conf
i który był przyczyną problemu. @kolbyjack wspomniał o tym powyżej w komentarzach.Kiedy się wyłączyłem
sendfile
- działało dobrze.To dlatego, że:
Jest to związane z tym błędem: https://www.virtualbox.org/ticket/12597
źródło
Możesz także ominąć / ponownie buforować plik po pliku za pomocą
i jako bonus możesz zwrócić ten nagłówek, aby zobaczyć, czy dostałeś go z pamięci podręcznej (zwróci „HIT”) lub z serwera treści (zwróci „BYPASS”).
aby wygasnąć / odświeżyć buforowany plik, użyj curl lub innego klienta, aby wysłać żądanie do buforowanej strony.
zwróci to świeżą kopię elementu, a także zastąpi zawartość pamięci podręcznej.
źródło
O ile nie skonfigurowałeś strefy pamięci podręcznej za pomocą ścieżki proxy_cache_path, a następnie jej nie użyłeś (na przykład w bloku lokalizacji), za pośrednictwem: proxy_cache nic nie zostanie zapisane w pamięci podręcznej.
Jeśli tak, to według autora nginx wystarczy po prostu usunąć wszystkie pliki z katalogu pamięci podręcznej.
Najprostszy sposób:
find /path/to/your/cache -type f -delete
źródło
[crit] 1640#0: unlink() "/path/to/cache/85/1cc5328db278b328f2c200c65179ad85" failed (2: No such file or directory)
Możesz usunąć katalog pamięci podręcznej nginx lub przeszukać określony plik:
I usuń tylko jeden plik, aby je odświeżyć.
źródło
grep -lr 'http://mydomain.pl/css/myedited.css$' /var/nginx/cache/*
grep: /var/nginx/cache/*: No such file or directory
Używam Ubuntu 14.04.3 LTS i nginx / 1.8.1. Dowolny pomysł?sudo find /var/nginx/cache -type f -exec grep -l '/css/myedited.css' {} \;
W tym pytaniu są dwie odpowiedzi.
Posługiwać się:
NA PRZYKŁAD:
źródło
Uznałem to za przydatne
Wyszukaj, a jeśli znaleziono, usuń.
źródło
W mojej instalacji nginx stwierdziłem, że muszę iść do:
i
w tym katalogu. Jeśli znasz ścieżkę do instalacji Nginx i możesz znaleźć katalog pamięci podręcznej, to samo może działać. Bądź bardzo ostrożny z
rm -rf
poleceniem, jeśli jesteś w niewłaściwym katalogu, możesz usunąć cały dysk twardy.źródło
Uruchamiam bardzo prosty skrypt bash, który zajmuje całe 10 sekund i wysyła mi pocztę po zakończeniu.
źródło
Też miałem ten problem.
Moja domena korzysta z cloudflare.com dla DNS (świetna usługa!). Aha! To było:
cloudflare.com -> caching -> Purge Cache (wszystko wyczyściłem) To rozwiązało mój problem!
źródło
Mamy bardzo dużą pamięć podręczną Nginx (gigabajty), którą czasami musimy wyczyścić. Opracowałem skrypt, który natychmiast czyści pamięć podręczną (jeśli chodzi o Nginx), a następnie usuwa katalog pamięci podręcznej bez głodzenia głównej aplikacji dyskowej we / wy.
W podsumowaniu:
Oto skrypt, dostosowany do Ubuntu 16.04 LTS, z pamięcią podręczną
/mnt/nginx-cache
:A jeśli jest to pomocne, oto konfiguracja Nginx, której używamy:
źródło
Dla tych, którzy nie działają inne rozwiązania, sprawdź, czy korzystasz z usługi DNS, takiej jak CloudFlare . W takim przypadku aktywuj „Tryb programowania” lub użyj narzędzia „Wyczyść pamięć podręczną”.
źródło
Pamiętaj, że proxy_cache_bypass może sprawić ci ból, jeśli twoja aplikacja nie zwróci buforowanej odpowiedzi dla tego konkretnego żądania, w którym je uruchomisz.
Jeśli na przykład aplikacja wysyła plik cookie przy każdym pierwszym żądaniu, skrypt, który wyzwala proxy_pass_bypass przez curl, prawdopodobnie otrzyma ten plik cookie w odpowiedzi, a nginx nie użyje tej odpowiedzi do odświeżenia pamięci podręcznej.
źródło
Uważaj, aby poprawnie określić poprawną ścieżkę.
źródło
Dla tych, którzy próbowali usunąć pliki pamięci podręcznej nginx i albo to nie działało, albo działało sporadycznie, spójrz na swoje ustawienie dla open_file_cache. Jeśli ta funkcja jest włączona i skonfigurowana do buforowania deskryptora pliku przez długi czas, Nginx może nadal widzieć wersję buforowanego pliku, nawet po usunięciu go z dysku. Musiałem zredukować wartość open_file_cache_valid do 1s (nie jestem pewien, czy jest to w zasadzie to samo, co całkowite wyłączenie bufora plików).
źródło
Na moim serwerze znajduje się folder pamięci podręcznej nginx
/data/nginx/cache/
Więc usunąłem tylko:
sudo rm -rf /data/nginx/cache/
Mam nadzieję, że to pomoże każdemu.
źródło
Jeśli chcesz wyczyścić pamięć podręczną określonych plików, możesz skorzystać z
proxy_cache_bypass
dyrektywy. Tak to się robiTeraz, jeśli chcesz ominąć pamięć podręczną, uzyskasz dostęp do pliku, przekazując parametr nocache
http://www.example.com/app.css?nocache=true
źródło
app.css?nocache=true
), podczas gdy oryginalny plik (bez zapytania) pozostaje w pamięci podręcznej (app.css
)?Możesz dodać konfigurację w nginx.conf w następujący sposób.
Z góry folder o nazwie „nginx_cache” jest dynamicznie tworzony w / tmp / do przechowywania treści w pamięci podręcznej.
źródło
Istnieje jedna właściwa metoda usuwania tylko plików pamięci podręcznej, która pasuje do dowolnego KLUCZA. Na przykład:
Spowoduje to usunięcie wszystkich plików pamięci podręcznej, które pasują do KLUCZA „yahoo / *”, jeśli ustawiono w pliku nginx.conf:
źródło
Używamy nginx do buforowania wielu rzeczy. W katalogu pamięci podręcznej znajdują się dziesiątki tysięcy elementów. Aby znaleźć elementy i je usunąć, opracowaliśmy kilka skryptów upraszczających ten proces. Repozytorium tych skryptów znajduje się poniżej:
https://github.com/zafergurel/nginx-cache-cleaner
Pomysł jest prosty. Aby utworzyć indeks pamięci podręcznej (z kluczami pamięci podręcznej i odpowiednimi plikami pamięci podręcznej) i wyszukać w tym pliku indeksu. Naprawdę pomogło nam to przyspieszyć znajdowanie przedmiotów (od minut do sekundy) i odpowiednio je usunąć.
źródło
W moim przypadku
touch
ten plik Css sprawia, że wygląda na to, że zasoby zostały zmienione (w rzeczywistościtouch
nic nie robi z plikiem, oprócz zmiany czasu ostatniej modyfikacji), więc przeglądarka i nginx zastosują najnowsze zasobyźródło
Wystąpił podobny problem:
Konfiguracja systemu i problem: (na wirtualnym pudełku hostuję za pomocą ubuntu i nginx - odświeżanie strony PHP nie odzwierciedla zmian w zewnętrznym pliku css). Zajmuję się tworzeniem witryny na komputerze z systemem Windows i przesyłaniem plików do nginx za pośrednictwem folderu udostępnionego. Wygląda na to, że nginx nie odbiera zmian w pliku css (odświeżanie w jakikolwiek sposób nie pomaga. Zmiana nazwy pliku css jest jedyną rzeczą, która działała)
Rozwiązanie: na maszynie wirtualnej znajdź udostępniony plik (w moim przypadku plik css). Otwórz za pomocą nano i porównaj z plikiem w udziale systemu Windows (wydają się identyczne). Na maszynie wirtualnej zapisz udostępniony plik w nano. Wszystkie zmiany są teraz odzwierciedlone w przeglądarce. Nie jestem pewien, dlaczego to działa, ale tak było w moim przypadku.
AKTUALIZACJA: Po ponownym uruchomieniu serwera VM problem powrócił. Postępowanie zgodnie z instrukcjami w części Rozwiązanie sprawiło, że css ponownie zareagował na aktualizacje
źródło
W moim przypadku była to włączona opcache w /etc/php/7.2/fpm/php.ini (Ubuntu):
Ustawienie wartości 0 spowodowało, że serwer ładuje najnowszą wersję plików (php).
źródło