PageSpeed Insights i kod Google Analytics
Ponieważ Google uznaje czas ładowania strony jako współczynnik systemu rankingowego Uważam za dość ironiczne, że kod Google Analitycs jest uznawany za spowalniający stronę. Więc pytanie brzmi, co możemy z tym zrobić?
Technik ominięcia problemu jest wiele można np.
- zamieścić plik js na zewnętrznym serwerze CDN,
- wyłączyć ładowanie kodu podczas przeglądania strony przez robota Google.
- W popularnych CMS’ach możną zastosować plugin modyfikujący kod np. https://wordpress.org/plugins/cache-external-scripts/ dla WordPress lub https://www.jch-optimize.net/downloads.html dla Joomla!
Moim zdaniem najlepszym rozwiązaniem jest wczytywanie pliku lokalnie z serwera. W tym celu przechodzimy na stronę:
Zapisz zawartość pliku na dysk komputera jako plik analytics.js Następnie prześlij go do głównego katalogu strony za pomocą klienta FTP lub przeglądarki plików na twoim serwerze.
Modyfikacja kodu analytics
Kolejnym etapem jest modyfikacja kodu śledzenia Google analytics, modyfikujemy fragment kodu odpowiedzialny za ładownie skryptu analytics.js:
(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
Zmieniamy na:
(window,document,'script','http://adres-twojej-strony.pl/analytics.js','ga');
W tym momencie warto sprawdzić czy kod GA działa prawidłowo w tym celu proponuje zalogować się na stronę Google Analitycs i sprawdzić np. liczę użytkowników online.
Aktualizowanie kodu js
Kolejnym krokiem jest okresowa aktualizacja pliku w tym celu dodam na serwerze, krótki skrypt, który zapisuje go serwerze.
Skrypt pobierający i zapisujący plik anaytics.js na serwerze:
<?php define('DS', DIRECTORY_SEPARATOR); define('DC_ROOT',$_SERVER['DOCUMENT_ROOT']); // adres pliku do pobrania $analyticsjs = 'https://www.google-analytics.com/analytics.js'; // plik zapisywany lokalnie na serwerze $analyticsjsLocal = DC_ROOT.DS.'analytics.js'; $fp = fopen($analyticsjsLocal, 'w+'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $analyticsjs); curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_FILE, $fp); curl_exec($ch); curl_close($ch); fclose($fp); ?>
Może kod nie jest zbyt elegancki ale jest prosty i działa.
Dodanie zadania Cron na serwerze
Proponuje ustawić zadanie Cron początkowo na minutę aby zweryfikować czy skrypt jest faktycznie aktualizowany po weryfikacji, proponuje ustawić codzienną aktualizację pliku analytics.js:
Przykład Zadania:
wget -q http://adres-twojej-strony.pl/analyticsloader.php -O /dev/null 2>&1
lub:
lynx -dump http://adres-twojej-strony.pl/analyticsloader.php >/dev/null 2>&1