Article View: pl.comp.lang.javascript
Article #51241Re: Problem z XMLHttpRequest
From: Cezary Tomczyk
Date: Fri, 14 Dec 2012 21:33
Date: Fri, 14 Dec 2012 21:33
42 lines
3061 bytes
3061 bytes
W dniu 2012-12-14 13:46, jaro pisze: > Krótkie podsumowanie: - za każdym razem tworzę nowy obiekt > XMLHttpReqest - wykorzystanie jednego globalnego powoduje problemy. > Każda przeglądarka może wysłać równolegle kilka zapytań. Jak się ta > pula wyczerpie to obiekt jest nadpisywany i wszystko pada. - za Niekoniecznie musisz za każdym razem tworzyć nową instancję XMLHttpRequest. Sprawdź, czy poprzednia jeszcze istnieje i jeśli ma readyState === 4 to możesz ponownie użyć tej samej instancji. > pomocą xmlhttp.ontimeout wychwytuję zapytania na które nie przyszła > odpowiedź w określonym czasie. 'Zabijam' je za pomocą > xmlhttp.abort(). Chrome nie obsługuje tego wcale a IE z problemami - > po ubiciu zapytania IE zgłasza xmlhttp.readyState=4 z 'pustym' > obiektem - obsługuje wyjątkami. - tworzę zapytanie bez użycia IE słabo lub wcale nie radzi sobie z obsługą np. requestów do nie istniejących zasobów (i podobnych problemów). Ja robię tak: 1. Ustawiam var done = false; zaraz po metodzie send(). 2. Ustawiam setTimeout na 30 sekund i po tym wywołuję lokalną metodę _abort w której sprawdzam, czy "done" jest false / true. Jeśli false to robię abort(). 3. W przypadku, gdy request powiódł się, to "done" ustawiam na true i kasuję timeOut-a. > Math.random() w celu pominięcia cacha przeglądarki. Stosuję tylko > odpowiednie nagłówki http. Użycie unikatowego linku powoduje > nadmierne zapełnienie cacha przeglądarki kolejnymi wersjami plików. - MZ lepiej robić sobie build-y nowe do nowych katalogów za każdym razem, np. /build123/[...] /build124/[...] Wówczas masz gwarancję, że klient zawsze pobierze najnowsze pliki i jeśli nic się nie zmieni to przy ponownym wejściu będą pobierane z cache przeglądarki. W uproszczeniu. -- Cezary Tomczyk http://www.ctomczyk.pl/
Technical Details
Message-ID:
<kag5vb$gj1$1@speranza.aioe.org>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed2.plix.pl!feed.xsnews.nl!border-2.ams.xsnews.nl!news.mixmin.net!aioe.org!.POSTED!not-for-mailReferences:
<34127733-0f56-4d5a-98ac-a4c369cabc72@googlegroups.com> <50b26fe0$0$26691$65785112@news.neostrada.pl> <6473795f-5479-4f02-b07e-5a712fba017d@googlegroups.com> <50b9dd23$0$26686$65785112@news.neostrada.pl> <80060841-ecc9-42d5-ae4d-8ab6dfc7fd32@googlegroups.com> <k9vitf$2ot$1@news.dialog.net.pl> <a66f46d1-7834-4d91-9037-c9f376d68ee7@googlegroups.com> <b98b079b-e598-41ce-9a10-5ed0aa424360@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed2.plix.pl!feed.xsnews.nl!border-2.ams.xsnews.nl!news.mixmin.net!aioe.org!.POSTED!not-for-mail From: Cezary Tomczyk <cezary.tomczyk@gmail.com> Newsgroups: pl.comp.lang.javascript Subject: Re: Problem z XMLHttpRequest Date: Fri, 14 Dec 2012 22:33:38 +0100 Organization: Aioe.org NNTP Server Lines: 42 Message-ID: <kag5vb$gj1$1@speranza.aioe.org> References: <34127733-0f56-4d5a-98ac-a4c369cabc72@googlegroups.com> <50b26fe0$0$26691$65785112@news.neostrada.pl> <6473795f-5479-4f02-b07e-5a712fba017d@googlegroups.com> <50b9dd23$0$26686$65785112@news.neostrada.pl> <80060841-ecc9-42d5-ae4d-8ab6dfc7fd32@googlegroups.com> <k9vitf$2ot$1@news.dialog.net.pl> <a66f46d1-7834-4d91-9037-c9f376d68ee7@googlegroups.com> <b98b079b-e598-41ce-9a10-5ed0aa424360@googlegroups.com> NNTP-Posting-Host: RMrsF+s1qSnxq5Qkkqjnpw.user.speranza.aioe.org Mime-Version: 1.0 X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Thunderbird/17.0 X-Notice: Filtered by postfilter v. 0.8.2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit