Blokowanie reklam potrafi zabrać więcej pamięci niż same reklamy

Na zużycie pamięci przez Firefoksa w ostatnich czasach nie ma specjalnie co narzekać. Nasze testy potwierdziły zresztą upowszechniającą się wśród internautów opinię – to już nie Mozilla produkuje najbardziej zasobożerną przeglądarkę, lecz Opera Software. Jeśli jednak wciąż Waszym zdaniem Firefox wymaga za dużo, to wiedzcie, że przyczyna może leżeć wcale nie w Firefoksie, lecz w popularnym AdBlock Plusie.

Takie są przynajmniej wyniki analiz zużycia pamięci dla kilku wersji Firefoksa, opublikowane na łamach bloga Nicholasa Nethercote z Mozilli. Deweloper Mozilli na wstępie przyznaje, że korzystanie ze współczesnej Sieci bez narzędzia do blokowania reklam graniczy z niemożliwością – gdy zdarza mu się skorzystać czasem z przeglądarki pozbawionej blokad, jest przerażony liczbą reklam emitowanych na stronach WWW.

Cena za blokowanie jest jednak niemała. Wystarczy jedynie włączyć AdBlocka Plus, by zużycie pamięci przez przeglądarkę Mozilli wzrosło o nawet 70 MB – większość z tego idzie na JavaScript. Widać było to dobrze w naszym teście: z jedną otwartą kartą, Firefox (kompilacja dla Windows) zabierał 128 MB. Z włączonym ABP zużycie pamięci wzrastało do 212 MB. Przy 10 otwartych kartach Firefox potrzebował 376 MB, z ABP już 550 MB. Otwarte podczas testu strony nie były szczególnie wymagające – w niektórych wypadkach sytuacja może wyglądać znacznie gorzej. Głównym winowajcą są tu pływające ramki (iframe).

Każda umieszczona w layoucie strony pływająca ramka zwiększa zużycie pamięci przez Firefoksa z włączonym ABP o 4 MB. Niby to nie jest wiele, ale dla witryn korzystających z wielu elementów iframe szybko dochodzi do eskalacji zużycia pamięci, nad którą przeglądarka po prostu traci kontrolę. Nethercote znalazł drastyczny przykład, stronę z testem schematu kolorów edytora vim. 400 pływających ramek oznacza, że bez ABP Firefox zużyje 370 MB na jej otwarcie i narysowanie. Wystarczy włączyć ABP i zużycie pamięci wzrasta do niemal 2 gigabajtów.

Czy to tak miało być? W końcu blokujący reklamy użytkownicy robią to nie tylko po to, by wydawców stron internetowych wpędzić w nędzę, jednym z argumentów jest agresywny charakter reklam, zużywających zbyt wiele zasobów komputera. Tymczasem terapia okazuje się być gorsza od choroby. Czy można coś w tej sprawie zrobić?

Na Bugzilli został już zgłoszony błąd związany z ekstremalnym zużyciem pamięci przez AdBlock Plusa. Udało się zlokalizować winowajcę: to kwestia obsługi arkuszy stylów (CSS). Rozszerzenie dla każdej pływającej ramki ładuje swój arkusz, zwykle o całkiem pokaźnych rozmiarach. Abonenci list z filtrami, takich jak Easylist, ładują więc ogromne ilości w sumie zbędnego kodu (który musi być nie tylko załadowany, ale i zinterpretowany), przynajmniej w porównaniu do użytkowników czystych instalacji Firefoksa.

Autor AdBlock Plusa, Władimir Palant, przyznał że niewiele w tej sprawie może zrobić. Rozpoczęto co prawda prace nad projektami, które docelowo mają zmniejszyć liczbę filtrów, ale to wszystko w kwestii CSS. Nieco więcej można zrobić w kwestii zużycia pamięci przez obiekty JavaScriptu. Nie będą to jednak jakieś przełomowe rozwiązania.

W dyskusji pojawiły się też inne pomysły, takie jak przerzucenie ciężaru filtrowania na plik hosts, czy ręczne oczyszczanie plików z filtrami dla ABP, ale każde z nich ma swoje wady. Zdaniem autora tego newsa, w warunkach domowych (i wszędzie tam, gdzie panujemy nad routerem i możemy korzystać z sensownego firmware, np. OpenWRT) najlepiej jest do blokowania reklam skorzystać z serwera web proxy Squid. Nie jest to oczywiście rozwiązanie uniwersalne, ale w wypadku osób, które gros swojego czasu na WWW spędzają w domu, może okazać się najlepsze. Ma też tą dodatkową zaletę, że rozwiązuje problem dla wszystkich domowych urządzeń łączących się z Siecią (a jak wiadomo, blokery reklam dla urządzeń mobilnych nie są tak skuteczne, jak ich wersje desktopowe).

źródłó

About the Author: admin

Leave A Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.