2015-08-26 9 views
9

Dla tych z nas, którzy prowadzą witryny z treścią i zajmują się sieciami reklamowymi, zwalczanie złośliwych lub nieprawidłowo działających nieuczciwych reklam może być frustrujące.Jak wykryć, czy strona jest wolna z powodu javascripts 3rd party?

Posiadam witrynę, która zawiera wiele filmów z serwisu Yailube & Dailymotion. Od pewnego czasu pojawia się zła reklama i powoduje, że odtwarzanie wideo się zacina. Zawsze zajmowałem się nimi w każdym indywidualnym przypadku. Ale czy istnieje sposób wykrywania (za pomocą javascript), czy strona jest wolna?

W mojej głowie bardzo prymitywnym sposobem jest ustawienie setInterval na 100ms. A jeśli wykryje duże opóźnienie w jednym przedziale, podejmij odpowiednie działania.

Czy istnieją inne, bardziej eleganckie podejścia?

+0

Właśnie usłyszałem dzisiaj podcast pod nazwą Techsnap, o którym wspomniał pracownik firmy reklamowej, że celowo spowalniają ładowanie stron, aby uzyskać leniwszy czas wyświetlania ... zarabiać więcej. Tak więc, reklamy, zwłaszcza flashowe, dlatego mam wyłączony flash i wszystko działa dobrze. – ppumkin

+0

@ppumkin Wow, jest to jeden z wielu powodów, dla których uważam, że musi być rewolucja w krajobrazie reklam internetowych. Zbyt wiele obszarów, które można wykorzystać. Ostatnio musiałem poradzić sobie z dziwną reklamą, która wyłącza przewijanie strony i kliknięcie prawym przyciskiem myszy ... – Dave

+0

Tak ... Flash jest głównym źródłem exploitów lub exploitów 0day w niezaktualizowanych przeglądarkach ... Problem polega na tym, że nie ma wymiany dla Flasha smutno :(A Adobe wypuszcza łatki w szokująco niskich cenach i grożą naukowcom z białego kapelusza działaniami prawnymi w zakresie inżynierii odwrotnej i dostarczania łatek do Adobe za darmo.Jest to jeden z plusów na Apple, rozwiązali problemy i zbanowani flash ... ale minus to to, że nie chcą się nimi dzielić ... Google i Firefox to jedyni aktywni faceci, którzy opracowują alternatywy dla Flasha ... ale jego wiek jest bardzo długi i bardzo niepoważny. – ppumkin

Odpowiedz

1

Po pierwsze, jeśli twoje spowolnienie jest w trakcie ładowania, utwórz symbole zastępcze reklam i załaduj je po wszystkim.

Drugie podejście, utwórz timer kodu JavaScript lub dołącz bibliotekę zegara, aby zmierzyć czas wczytywania strony. Jeśli jest większy niż dopuszczalny próg, zabij reklamę za pomocą Javascript lub zapisz zaległości w usłudze internetowej.

Trzecie podejście, jeśli licznik czasu nie zwiększa powolności, ponieważ jest przyrostowy, należy użyć funkcji setTimeout, która rejestruje znacznik czasu i wywołuje się co 200 ms i porównuje nowe sygnatury każdego połączenia ze starszym znacznikiem czasu z poprzedniego połączenia.

Jeśli wywołanie setTimeout ustawione na 200ms trwa 500ms, to nareszcie ma ono duże opóźnienie i powinno zabić reklamę z Javascriptem lub zignorować powolność usługi internetowej.

Każda z tych metod będzie musiała zostać dostosowana do rzeczywistej witryny.

+0

Jeśli reklama jest ładowana z pamięci flash, javascript nie wykryje "spowolnienia", ponieważ silnik javascript wciąż działa bez opóźnień ... inne bzdury, które wkładają do flasha, spowalniają w dół interfejsu użytkownika do zatrzymania, w innym procesie, niedostępnym dla javascript. flash musi wkrótce umrzeć, bardzo szybko. – ppumkin

+0

Reklama flash może nie mieć przytłaczającego wpływu na silnik javascript, ale jeśli reklama powoduje, że reszta strony chuguje z powodu pełnej spowolnienia przeglądarki, javascript wyświetla ją. –

+0

Naprawdę chciałbym to przetestować ... ponieważ z mojego doświadczenia wynika, że ​​opóźnienie systemu operacyjnego w ogóle nie miało wpływu na procesy przeglądarki (w procesach w przestrzeni pamięci) ... ponieważ są one inaczej traktowane priorytetowo.Chrome ma jednak kilka fajnych narzędzi do testowania wydajności. – ppumkin

Powiązane problemy