Uruchamiasz raport, coś naprawiasz, uruchamiasz świeży raport — a nowy pokazuje zmiany, których się nie spodziewałeś. Albo uruchamiasz dwa raporty pod rząd bez żadnych zmian i nadal się różnią. To zaskakująco częste i prawie zawsze wyjaśnialne tym, jak działa współczesny web, a nie błędem w analizie. Ten artykuł omawia najbardziej prawdopodobne przyczyny.
1. Warstwy cache
Cachowanie to zdecydowanie najczęstsza przyczyna różnic między raportami. Typowa strona WordPress ma kilka warstw cache nałożonych na siebie:
- Page cache (np. WP Rocket, LiteSpeed, W3 Total Cache): Przechowuje w pełni wyrenderowany HTML i serwuje go przez konfigurowalny czas. Po wygaśnięciu cache następny odwiedzający uruchamia regenerację, która może zawierać inne reklamy, inne rekomendacje lub świeżo wygenerowaną nazwę pliku łączonego.
- Object cache (Redis, Memcached): Cachuje wyniki zapytań bazodanowych. Mniej widoczne z zewnątrz, ale może zmieniać, które wtyczki lub widżety odpalają w danym żądaniu.
- CDN edge cache (Cloudflare, BunnyCDN, KeyCDN): CDN może serwować nieco starszą lub nowszą wersję w zależności od węzła edge, który obsłuży żądanie.
- Cache hostingowy (zarządzane hostingi WordPress): Kinsta, WP Engine, SiteGround i inni uruchamiają własne cache serwerowe z własną logiką unieważniania.
Dwa raporty uruchomione w odstępie kilku minut łatwo trafią na różne stany cache. Już to wyjaśnia większość różnic.
2. Dynamiczna treść
Wiele stron renderuje części strony dynamicznie przy każdym żądaniu. Częste przykłady:
- Widżety „Ostatnie wpisy“ lub „Najnowsze produkty“ wyciągające najnowsze pozycje.
- Rekomendacje „Może Ci się spodobać“.
- Losowe rotatory opinii klientów.
- Sloty reklamowe rotujące kreacjami.
- Spersonalizowane powitania na podstawie geo-IP lub urządzenia.
- Liczniki na żywo, stany magazynowe, ceny.
Nawet bez żadnej zmiany cache, dwa żądania mogą wyprodukować różny HTML, różne liczby słów, różne liczby obrazów, a czasem różne zasoby zewnętrzne.
3. Testy A/B i feature flags
Jeśli Twoja strona uruchamia narzędzie do testów A/B (VWO, Optimizely, Convert) lub feature flags (LaunchDarkly, GrowthBook), każda wizyta może być przypisana do innego wariantu. Warianty mogą oznaczać:
- Inne nagłówki lub obrazy.
- Inny układ strony.
- Inne ładowane skrypty lub usługi firm trzecich.
- Inne ustawiane cookies.
Z punktu widzenia raportu, ten sam URL legitymie wyprodukował dwie różne strony.
4. Skrypty firm trzecich i menedżery tagów
Menedżery tagów (Google Tag Manager, Tealium, Matomo Tag Manager) decydują w locie, które tagi odpalić. Warunki mogą obejmować porę dnia, lokalizację odwiedzającego, stan zgody, reguły próbkowania. Raport uruchomiony dziś i jutro może załadować zupełnie inne piksele śledzące i skrypty analityczne, mimo że sama strona się nie zmieniła.
5. Zgoda na cookies i baner
Współczesne managery zgód często serwują uproszczoną wersję strony, dopóki nie zostanie udzielona zgoda, a następnie ładują pełen zestaw skryptów śledzących i personalizujących. InspectWP odwiedza bez zgody. Jeśli Twój manager zgód zmieni domyślne zachowanie (default-deny vs. default-accept w niektórych regionach), raport zmieni się odpowiednio.
6. Treść zależna od czasu
Niektóre strony zmieniają się wraz z zegarem:
- Banery promocyjne uruchamiające się o konkretnej godzinie.
- Sezonowe obrazy hero.
- Aktualizacje stanów magazynowych i cen.
- Zaplanowane wpisy blogowe.
Raport o 09:00 i o 09:05 może rozdzielić zaplanowaną zmianę.
7. Różnice geograficzne
InspectWP zawsze crawluje z tej samej stałej lokalizacji. Jeśli porównujesz raport InspectWP z tym, co widzisz w swojej przeglądarce z innego kraju, możesz legitymie widzieć inną treść (język, ceny, dostępne produkty), inne fonty (endpointy CDN), inne zasoby zewnętrzne (regionalni dostawcy Map).
8. Aktualizacje wtyczek i motywów
WordPress i wiele wtyczek aktualizuje się automatycznie. Pomiędzy dwoma raportami wtyczka mogła się zaktualizować, zmienić nazwy plików zasobów, usunąć funkcję lub dodać nowy zasób zewnętrzny. Strona wygląda tak samo dla człowieka, ale produkuje inny odcisk.
9. Zmienność po stronie serwera
Negocjacja wersji HTTP, wybór algorytmu kompresji (gzip vs. brotli), konkretne nagłówki HTTP i szczegóły uzgadniania TLS mogą się różnić w zależności od tego, który serwer w klastrze load-balanced obsługuje żądanie. Te różnice pojawiają się w sekcjach Nagłówki i Wydajność.
10. Jak porównywać dwa raporty z sensem
- Uruchom oba raporty blisko siebie w czasie, jeśli chcesz porównać stany „as-is“.
- Wyczyść cache przed każdym raportem, jeśli chcesz porównać stan po przebudowie cache.
- Tymczasowo wyłącz testy A/B, jeśli konkretnie chcesz zmierzyć baseline.
- Crawluj dokładnie ten sam URL, wraz z trailing slash i parametrami zapytania.
https://example.comihttps://example.com/to technicznie różne URL-e. - Patrz na strukturę, nie szum. Różnice w „liczbie słów“ o kilka procent lub pojedyncza rotująca reklama zwykle nie są znaczące. Różnice w listach wtyczek, nagłówkach bezpieczeństwa, tagach SEO lub polach critical-status zwykle są.