Nie widać nowości? Odśwież ręcznie stronę!

Problem dotyczy przede wszystkim FireFoxa w Linuxie, ale niedawno pojawił się również w innych przeglądarkach. Skutek tragiczny — gwałtownie spadła nam w ciągu tygodnia odwiedzalność z ok. 13 000 unikalnych wejść dziennie na ok. 10 000. Wczoraj po raz pierwszy od wielu miesięcy licznik pokazał mniej niż 10 000.

FireFox – opis problemu i prowizoryczne rozwiązanie

Problem dotyczy przede wszystkim FireFoxa w Linuxie od wersji 80 – zauważyłem go nie tylko na naszym portalu, ale także na innych stronach. Z powodu cachowania plików tymczasowych w przeglądarce, przeglądarka nie odświeża ich automatycznie i strona może wyglądać tak, jakby nic się na niej nie działo. Doradzam ustawienie w przeglądarce automatycznego usuwania plików tymczasowych podczas jej wyłączenia. Aby to zrobić, skopiuj i wklej w pasku adresowym FireFoxa about:preferences#privacy, a potem poszukaj „Ciasteczka i dane witryn” i zaznacz „Usuwanie ciasteczek i danych witryn podczas zamykania przeglądarki Firefox”.

Dzięki temu, za każdym razem gdy uruchomisz FireFoxa – wczytają ci się nowości.

Jeśli publikujesz na portalu w FireFoxie kilka artykułów dziennie, musisz ręcznie odświeżać w panelu użytkownika stronę po dodaniu każdej nowości, lub włączać i wyłączać przeglądarkę po każdym dodanym wpisie. Inaczej drugi i kolejny wpis przeglądarka potraktuje jak aktualizację pierwszego – i nadpisze go.

Problem pojawia się też w innych przeglądarkach

Problem pojawił się po raz pierwszy w FireFoxie 80 i trwa do dzisiaj. Coś usprawnili i w praktyce zepsuli. Teraz pojawił się w przeglądarkach opartych na silniku Chrome. Od razu zauważyłem, że nowe wpisy nadpisują mi stare wpisy (dodałem kilka nowości, a na stronie wyświetlała się tylko najnowsza), z powodu czego musiałem wrócić do FireFoxa i wyłączyć cachowanie w przeglądarce. Po gwałtownym spadku unikalnych wejść o ok. 2500 i mailach z pytaniami, czy coś się stało, bo nie ma nowości, wiem już, że skala problemu może być ogromna.

Zrobiłem test wtyczek — wyłączyłem wszystkie wtyczki na stronie, usunąłem cache i historię w przeglądarce — problem nie zniknął. Czyli to nie konflikt wtyczek.

Zrobiłem test szablonu — użyłem go na innej stronie — problem u z dodawaniem i odświeżaniem cache nie było. Czyli to nie wina szablonu strony.

Po śledztwie wiadomo już, że to problem z brakującym last-modified w nagłówku strony głównej. Last-modified wysyła przeglądarce informację o dacie najnowszego wpisu – przeglądarka odświeża stronę jeśli data jest nowsza. Największym jednak problemem jest data w parametrze Expired i Cache-Control. Serwer nginx ignoruje zmiany w pliku .htaccess, w którym próbowałem wyłączyć Expired. Expired do data wysyłana przeglądarce z informacją, kiedy ma odświeżyć stronę. Ponieważ ustawia się automatycznie na za 7 dni, przez 7 dni strona sama w przeglądarce się nie odświeży.

Wiadomo też, że częściowo odpowiadam za problem, ponieważ wyłączyłem wtyczkę do cachowania strony na serwerze, gdyż przestała tworzyć pliki tymczasowe. Teraz okazało się, że w przeglądarkach z silnikiem Chrome pozwalała dodawać nowe wpisy bez nadpisywania i odświeżała stronę. Dlatego ponownie ją włączyłem.

Dodatkowo zainstalowałem nową wtyczkę, która dodaje nagłówek last-modified, aby prowizorycznie rozwiązać problem, dopóki nie zostanie wymyślony pomysł na naprawienie błędu WordPressa. W FireFoxie w Linuxie problem z odświeżaniem pozostał. Wielu użytkowników zapewne zobaczy odświeżoną stronę 14 kwietnia po południu, a do tego czasu mogą być nieświadomi, iż na portalu codziennie publikowane są nowości.

Na razie nie wiem, jak usunąć ten błąd. Jeśli nasz portal czyta jakiś ekspert, który wie, co to może być, gdzie siedzi i jak naprawić ustawienia, proszę o kontakt e-mailowy:

wolnemedia (kropka) net (małpa) interia (kropka) pl

Maurycy Hawranek
Admin WolneMedia.net

Aktualizacja

Mimo moich wysiłków problem staje się coraz bardziej poważny. Ruch na naszym portalu spadł o 25% w ciągu 10 dni! Bywało średnio 12 000 unikalnych wejść, wczoraj było 9008. Według wstępnego szacunku, na podstawie wejść do godziny 11:00, dzisiaj będzie ok. 8500.

Wyłączyłem wtyczką HTML Headers nagłówki Expired i Cache-Control – mimo to wciąż się pojawiają (choć nie powinny). Zmodyfikowałem pliki php WordPressa, zmniejszając czas Expired z 7 dni na 10 minut — mimo to wciąż pojawia się czas na odświeżanie 7 dni. Zaczynam poważnie zastanawiać się, czy to sabotaż. Możliwe, że przeciwko portalowi podjęto inne tajne działania w celu obniżenia liczby wejść, a zamieszanie z cachowaniem to zbieg okoliczności. Jeśli coś wiecie — napiszcie.