Zatížení na straně serveru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jeriiii
Člen | 21
+
0
-

Ahoj,

vytvářím teď ajaxovou aplikaci a zajímalo by mě, jak ajax vlastně zlepší zatížení serveru. Mám totiž takové podezření, že například při obnovení snippetu se vlastně musí provést celý cyklus načtení stránky. Pak se z ní jen vyřízne ten daný snippet a ten se odešle. Jak to tedy funguje?

Děkuji

Myiyk
Člen | 321
+
0
-

Teoreticky (nevím jestli to tak opravdu je) by se měl spouštět jen ten kód v invalidovaných snippetech a žádná omáčka okolo. Šablona vygeneruje jen to co je opravdu nutné a zbytkem se netrápí.


Používáš-li lazy přístup k databázi (to znamená že se dotazy do DB dávají až v moment, když opravdu něco vypisuješ), tak by se mělo zpracovávat to – co je v invalidovaných snippetech.
Tím se ušetří výkon, protože se napracuje s databází a spouští se o nějaký kód méně.

Zrychlení jde trochu poznat v prohlížeči, když ti nepřeblikne bílá plocha při načítání stránky. Nemění se celá stránka a prohlížeč to je schopen vykreslit o trochu rychleji.

Pomocí snippetů se přenáší (mělo by) jen změněná data. Odpověď serveru je tedy datově menší než celá stránka a prohlížeč ji stáhne rychleji.

Přidáš-li nějaký efekt načítání, tak stránka působí plynuleji a pro člověka se také může zdát o něco rychlejší.


Chceš-li opravdu zrychlit nette, použij HipHop Virtual Machine (HHVM) místo klasického PHP. Zrychlení je obrovské, ze 120ms na 30ms (osobně jsem testoval).

Jeriiii
Člen | 21
+
0
-

Děkuji za vyčerpávající odpověď, myslím že jsem do toho konečně proniknul. Co jsem se koukal na odpovědi serveru, tak vrací dokonce jen JSON (nevím jestli vždy, ale co jsem koukal tak ano), takže se ani nemusí trápit s HTML, což je super.
Ten HHVM je na cachování PHP scriptů, chápu to dobře? Na locale (kvůli rychlejšímu spouštění testů) asi přejdu na PHP 5.5, to by mělo mít už vlastní cachování v sobě. Na produkci již cachování scriptů běží.

Myiyk
Člen | 321
+
-3
-

HHVM vykompiluje PHP do C++ a uloží do cache. Nejedná se tedy pouze o cache, ale také o značnou optimalizaci.

David Matějka
Moderator | 6445
+
+4
-

@Myiyk to delal hiphop for php, hhvm je virtual machine s jit prekladem do bytecodu, viz http://hhvm.com/

HHVM je proste alternativni implementace pro spousteni php kodu. Vyhodou je rychlost (ale az vyjde phpng, tak uvidime :)) a podpora hack language. Nevyhodou je ne zcela plna kompatibilita s oficialnim PHP

Majkl578
Moderator | 1364
+
+1
-

Myiyk napsal:

Chceš-li opravdu zrychlit nette, použij HipHop Virtual Machine (HHVM) místo klasického PHP.

Vtipně napsáno, jelikož HHVM je implementací PHP. :))

Tak či tak, Nette pod HHVM aktuálně stále nefunguje, HHVM je příliš nekompatibilní.

matej21 napsal:

Vyhodou je rychlost (ale az vyjde phpng, tak uvidime :))

Zeev Suraski dělal benchmark PHPNG (součást PHP 7), podle kterého vyšlo PHPNG jako znatelně rychlejší než HHVM. http://zsuraski.blogspot.co.il/…g-phpng.html
Od té doby se do PHP 7 dostalo ještě PHP-AST, což by mělo přinést také další zrychlení.

--

Co se zatížení týče, prvním krokem by mělo být používání OPcache+, nejlépe v režimu, kdy se vůbec nesahá na disk a invalidace se provádí manuálně.