🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.javascript
Article #51241

Re: Problem z XMLHttpRequest

#51241
From: Cezary Tomczyk
Date: Fri, 14 Dec 2012 21:33
42 lines
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-mail
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>

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