Autor | Zpráva | ||
---|---|---|---|
kimi Profil * |
#1 · Zasláno: 2. 8. 2013, 09:22:10
Ahoj, potřeboval bych poradit s cachováním, stránka se mi načítá strašně dlouho (resp. trvá, než se vůbec začne načítat, samotný načítací čas je v pořádku).
Ve Firefoxu jsem si prohlédl hlavičky, pro jistotu jsem je porovnal i s jinými weby, např. seznam.cz, který je svými daty objemnější, přesto má v načítacích časech lepší hodnoty. Něco bude způsobeno asi serverem (s tím nic neudělám), ale něco pomoci bych si snad někde nějak mohl. Můj web, hlavičky odezvy GET /stranka/ 200 OK | domena.cz | 8,1 KB | 1.6s Accept-Encoding gzip;q=1.0, deflate;q=0.5 Cache-Control max-age=1800 Connection Keep-Alive Content-Encoding gzip Content-Type text/html; charset=utf-8 Date Fri, 02 Aug 2013 07:02:42 GMT Expires Sat, 03 Aug 2013 07:03:42 GMT Keep-Alive timeout=15, max=98 Last-Modified Thu, 25 Jul 2013 09:49:57 GMT Pragma public Server Apache/2.2.16 (Debian) Transfer-Encoding chunked Vary Accept-Encoding x-powered-by PHP/5.3.3-7+squeeze14 Trvá 1,5s jen než se začne něco dít, zbytek (obrázky, css, atd.) se načtou do 0,5s. Hlavičky požadavku Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip, deflate Accept-Language cs,en-us;q=0.7,en;q=0.3 Connection keep-alive Cookie ... DNT 1 Host www.domena.cz Referer http://www.domena.cz/stranka/ User-Agent Mozilla/5.0 (Windows NT 6.1; rv:20.0) Gecko/20100101 Firefox/20.0 Pro porovnání Seznam.cz Hlavičky odezvy GET www.seznam.cz 200 OK | 16,6 KB | 77.75.76.3:80 | 140ms Cache-Control max-age=0, no-cache, no-store, must-revalidate Connection keep-alive Content-Encoding gzip Content-Type text/html; charset=UTF-8 Date Fri, 02 Aug 2013 07:09:34 GMT Expires Fri, 02 Aug 2013 07:09:34 GMT Pragma no-cache Server nginx/1.2.3 Set-Cookie as=cbfpJUH8ge512poKSUhN5g==; Domain=.seznam.cz; expires=Wed, 29-Jan-2014 07:09:34 GMT; Path=/ Transfer-Encoding chunked X-Frame-Options sameorigin X-XRDS-Location http://id.seznam.cz/yadis Hlavičky požadavku Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip, deflate Accept-Language cs,en-us;q=0.7,en;q=0.3 Connection keep-alive Cookie hint=MTM2OTUwNzMyMiwwOzM1LDEsMTM3NDc2NDQwMywx; dp=columnjs; as=D6WNQQ2PBUhmB8tDB1tSWQ==; ftxt_pref=qwPt4LAxweJ-4LPxZZughXuh9VQ8kXjN4Ak80bPowvzr; sznmaildomain=email.cz; getIe10Count=1; cache0=NalWr3Txc3FRyeuOfNHK2GLQuHfrCr8O3oeW8x3MB/Y7JxRDCoAxgjqIOC37gmOMEUJbG74sbRAk5PAloqtSHh1XVNReA47Pa2924qsBQVgrMkUvdp1eup/MyMh6dvLyW6pbgiDxZWSvn812XzWcKyZiLXwPnFIuGyrIbbVgWOw=; hw=86400 DNT 1 Host www.seznam.cz User-Agent Mozilla/5.0 (Windows NT 6.1; rv:20.0) Gecko/20100101 Firefox/20.0 Proč má seznam nastaveno no-cache, no-store, must-revalidate, já cache na 15 minut, expires nastaveno na 24 hodin a přesto to tak dlouho trvá? Jasně, jemu se obsah mění, tak ho nesmí cachovat, ale proč je tedy načtení tak rychlé a u mě pomalé? Hlavičky požadavku máme oba stejné, ty se berou kde? Četl jsem toho celkem dost, ale nejsem úplně programátor a začínám se v tom ztrácet... Rady, tipy? Díky. |
||
loyza Profil |
#2 · Zasláno: 2. 8. 2013, 11:04:42
Tak nejprve bych se podíval do kódu té stránky. Pokud se generuje 1,5s tak bych hledal místa kde se dá stránka zrychlit. Druhá věc je cachování na straně serveru a až třetí bod jsou hlavičky na straně klienta.
Důvod je ten, že i když nastavíš ty hlavičky správně, tak první návštěva klienta na stránce bude pomalá a až další zobrazení té stránky bude rychlé protože půjde z cache prohlížeče. Problém je, že k tomuto druhému zobrazení nemusí vůbec dojít (uživatel odejde, nebo se zpět na tuto stránku nedokliká). Takže zkus projít zdrojový kód a najít pomalá místa, která můžeš zoptimalizovat.A pokud i potom bude stránka pomalá tak bych zkusil cachovat celý obsah vygenerované stránky (pokud je to možné, což ne vždy je). Pokud to není možné, tak zkus cachovat kusy stránky. Pokud nevím co ta stránka dělá, tak je těžké radit. Každopádně si myslím, že přesně tak to mají v tom seznamu. Mají rychlý kód a cache na straně serveru. |
||
kimi Profil * |
#3 · Zasláno: 2. 8. 2013, 11:13:56
loyza:
aha, měl jsem za to, že v prohlížeči bude nějakým způsobem zpracovaná cache i ze serveru, ne jen prohlížečová. Asi blbost :-) V PHP je následující: header('Accept-Encoding: gzip;q=1.0, deflate;q=0.5'); header("Pragma: public"); header("Cache-Control: max-age=1800"); // 30 mins header('Expires: '.gmdate("D, d M Y H:i:s",time() + 60 * 60 * 24).' GMT'); //den $the_date = ...; //datum posledni modifikace z DB nebo time() header('Last-Modified: ' . gmdate('D, d M Y H:i:s',$the_date) . ' GMT'); Cílil jsem přímo na cache, myslel jsem, že problém bude tady. Tenhle zápis výše uvedený je správně? Zkusím ještě postupně měřit jednotlivé kusy kódu, ale nerad bych dělal něco, co je teď zbytečné. Nastavení té cache tady mám dobře? Pak ještě v .htaccess je, ale tady zatím problém není, obrázky se načítají vcelku svižně. RewriteEngine on <FilesMatch "\.(jpg|jpeg|png|gif|swf|css|js)$"> Header set Expires: "Thu, 15 Apr 2050 20:00:00 GMT" </FilesMatch> |
||
loyza Profil |
#4 · Zasláno: 2. 8. 2013, 11:24:49
Asi jsi mě nepochopil. Na tyhle hlavičky a htaccessy se vykašli, úplně je vyhoď. Udělej stránku rychlou bez toho. Až se stránka bez těch hlaviček bude načítat rychle tak začni přemýšlet o těchto hlavičkách a o cache v prohlížeči, ale nejdůležitější je aby se stránka generovala rychle.
Jinak ty hlavičky vypadají, že jsou v pořádku. Ale nijak výrazně jsem to nezkoumal, to není tvůj bottleneck. |
||
Časová prodleva: 11 let
|
0