Autor | Zpráva | ||
---|---|---|---|
_es Profil |
#1 · Zasláno: 18. 12. 2014, 01:00:22
Prečo posielaš dva sieťové dotazy? Stačí ti predsa jeden PHP skript, ktorý vráti to, čo novinky.php aj čo blok.php. Pozri si, aký je rozdiel medzi setInterval a setTimeout.
|
||
juriad Profil |
V tvém kódu nemusíš psát žádný středník (v JS jsou volitelné), existují však situace, kdy ho musíš napsat, abys zabránil chybné interpretaci.
Piš středník vždy. function a() {alert('1')} a() // sem přidej středník (function(){alert('2')})() Ten setTimeout máš stále na špatném místě. Měl by být uvnitř getResult .
|
||
jakre Profil |
_es:
„Pozri si, aký je rozdiel medzi setInterval a setTimeout“ Psal si mi, že jsem nevnořil funkci setTimeout a teď tu píšeš, abych si o tom přečetl... „Stačí ti predsa jeden PHP skript, ktorý vráti to, čo novinky.php aj čo blok.php“ Jedno jde do jednoho ID, druhé do druhého. juriad: „Měl by být uvnitř getResult.“ Takto? jQuery().ready(function (){ getResult(setTimeout,5000); }); // pokračování... Nebo takto? // ... function getResult() { setTimeout(getResult,5000); jQuery.post("novinky.php", function(data) { jQuery("#novinky").html(data); }); jQuery.post("blok.php", function(data) { // tady už seTimeout asi nebude jQuery("#blok").html(data); }); } |
||
_es Profil |
#4 · Zasláno: 18. 12. 2014, 01:12:02
jakre:
„Jedno jde do jednoho ID, druhé do druhého.“ To predsa nie je dôvod, aby to nemohol vracať len jeden serverový skript. Ak by tam bolo 100 elementov, tak na to vytvoríš 100 serverových skriptov a každých pár sekúnd bude prehliadač vysielať 100 sieťových dotazov? |
||
juriad Profil |
#5 · Zasláno: 18. 12. 2014, 01:12:31
To druhé, samozřejmě.
Kdykoli se zavolá getResult, jako první se naplánuje jeho spuštění za 5 sekund a následně se provedou requesty na server a výměna obsahu. |
||
_es Profil |
#6 · Zasláno: 18. 12. 2014, 01:18:55
[#5] juriad:
To predsa pripomienku v Auto-refresh u src"..." vôbec nerieši: Str4wberry: „Možná bych spíš použil setTimeout, který by se volal vždy až při získání dat.“ |
||
jakre Profil |
Reaguji juriada:
V tom případě vypadá kód takhle: jQuery().ready(function (){ getResult(); }); function getResult() { setTimeout(getResult,5000); jQuery.post("novinky.php", function(data) { jQuery("#novinky").html(data); }); jQuery.post("blok.php", function(data) { jQuery("#blok").html(data); }); } _es: „To predsa nie je dôvod, aby to nemohol vracať len jeden serverový skript.“ Jsou rozdíly v zatížení serveru jedním nebo dvěma scripty tak markantní? |
||
_es Profil |
#8 · Zasláno: 18. 12. 2014, 01:21:52
[#7] jakre:
Až na to, že to Str4wberryho pripomienku vôbec nerieši. |
||
jakre Profil |
#9 · Zasláno: 18. 12. 2014, 01:24:22
_es:
„až při získání dat“ Která to je tedy část scriptu? |
||
juriad Profil |
#10 · Zasláno: 18. 12. 2014, 01:25:22
_es:
Má smysl to řešit? Pokud jakre navrhne něco jako getResult(setTimeout,5000); , tak je zřejmé, že skombinování několika dotazů do jednoho je na něj příliš.
A navíc, co když request neprojde, tak už se nikdy nenaplánuje refresh? To by se musel přidat nějaký timeout k requestu a začíná se to opravdu komplikovat. |
||
jakre Profil |
#11 · Zasláno: 18. 12. 2014, 01:30:14
Reaguji na juriada:
„skombinování několika dotazů do jednoho je na něj příliš.“ Od toho jsem založil tohle téma a vedeme zde diskuzi. |
||
_es Profil |
#12 · Zasláno: 18. 12. 2014, 01:53:23
jakre:
„Která to je tedy část scriptu?“ Ak by si mal na to len jeden serverový skript, tak by bola tá „časť skriptu“ jedna. V tvojm prípade (kód v [#7]) časti tesne za ....html(data); .
Prerobil by som to na: function getResult() { var t = setTimeout(getResult, 30000); jQuery.post("vystup.php", function(data) { clearTimeout(t); /* spracovanie dát */ setTimeout(getResult, 5000); }); } vystup.php by vrátil všetko potrebné a číslo 30000 (30 s) by sa zvolilo tak, aby sa v prípade nejakej chyby obnovilo opätovné načítavanie a súčasne by bolo málo pravdepodobné, že by trval dotaz dlhšie.
|
||
jakre Profil |
#13 · Zasláno: 18. 12. 2014, 08:43:11
_es:
Ten kód psaný výše je celý? Stačí tedy, když ho použiji a soubory sjednotím a uložím jako vystup.php? |
||
_es Profil |
#14 · Zasláno: 18. 12. 2014, 11:14:24
[#13] jakre:
Časť „spracovanie dát“ si už musíš dorobiť. Výstupy z pôvodných PHP skriptov zjednotíš v PHP tak, aby si ich potom vedel v JS spracovať. |
||
jakre Profil |
#15 · Zasláno: 18. 12. 2014, 12:52:25
_es:
Už v odpovědi číslo [#7], jsem se tě ptal, zda-li to má vůbec nějaký smysl to sjednotit: „To predsa nie je dôvod, aby to nemohol vracať len jeden serverový skript.“ Jsou rozdíly v zatížení serveru jedním nebo dvěma scripty tak markantní? |
||
_es Profil |
#16 · Zasláno: 18. 12. 2014, 12:58:17
[#15] jakre:
Tak zmenšenie frekvencie sieťových dotazov na polovicu je asi „markantné“ dosť. Ak budeš chcieť prenášať zo serveru ďalšie informácie v 5 s intervaloch tak na ne vyrobíš ďalšie PHP skripty a zahltíš sieť ďalšími dotazmi? |
||
jakre Profil |
#17 · Zasláno: 18. 12. 2014, 13:25:19
_es:
„vyrobíš ďalšie PHP skripty a zahltíš sieť ďalšími dotazmi“ Pokud je to tak markantní rozdíl, tak ano, protože jsem nepochopil odpověď číslo [#12]... Když zkouším test rychlosti webu, dostanu, že nejdelší je zpracování stránky blok.php. V tomto souboru je však zatím pouze prostý text a přesto se čeká přes 1 sekundu. Zde je výsledek testu rychlosti. |
||
Fisir Profil |
#18 · Zasláno: 18. 12. 2014, 20:31:18
Reaguji na jakre:
„Jsou rozdíly v zatížení serveru jedním nebo dvěma scripty tak markantní?“ V zatížení serveru možná ne, ale klienta ano. Nezapomínej, že existují mnohem horší podmínky připojení, než to, co máš doma. Existují totiž třeba WiFiny ve vlacích nebo školách, které jsou permanentně přetížené a jenom navázání spojení se serverem může trvat deset sekund. A jestli budu na výsledek čekat tři čtvrtě minuty, nebo minutu a půl, to už je sakra rozdíl a může to i definovat, zda na tvé stránce zůstanu. Pokud je to tedy relativně snadno proveditelné, posílej jenom jeden požadavek. |
||
jakre Profil |
Fisir:
„posílej jenom jeden požadavek“ Myslíš tím i požadavky na načtení CSS stylu, import fontu a podobně? Zřejmě máš pravdu, u nás není LTE, takže se mi některé stránky načítají půl minuty, jiné deset sekund... „Když zkouším test rychlosti webu, dostanu, že nejdelší je zpracování stránky blok.php.“ Z jakého důvodu se čeká 1 sekundu na načtení PHP souboru, kde je jen prostý text (zatím)? |
||
Časová prodleva: 9 let
|
0