12.07.2015 Views

img - Xakep Online

img - Xakep Online

img - Xakep Online

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Слоеный пирог типичного веб-сайтаNginx — гордость отечества :)# Çàãîëîâîê ïî óìîë÷àíèþdefault_type text/html;# Åñëè äàííûå â êýøå íå íàéäåíû — çàïðàøèâàåì èõ ó áýêýíäàerror_page 404 = /fallback;}location /fallback {proxy_pass backend;}3. Äëÿ PHP óñòàíàâëèâàåòñÿ ðàñøèðåíèå memcache (êëèåíò êmemcached):$ sudo pecl install memcache4.  ñòðàíèöû âñòðàèâàåòñÿ ïðèìåðíî òàêîé êîä:$ vi smaple.php# Èíèöèàëèçàöèÿ memcached îïóùåíàob_start();$html = ob_get_clean();$memcache->set($_SERVER['REQUEST_URI'], $html);echo $html;Âñå ýòî îòëè÷íî ðàáîòàåò, íî òîëüêî â îòíîøåíèè î÷åíü ïðîñòûõ, ïî÷òèñòàòè÷åñêèõ âåá-ñàéòîâ. Äåëî â òîì, ÷òî ñòðàíèöà íå âñåãäà äîëæíà áûòüîäèíàêîâîé äëÿ âñåõ ïîñåòèòåëåé. ×òî åñëè ãëàâíàÿ ñòðàíèöà áóäåò çàêýøèðîâàíàïðè âõîäå íà ñàéò ãîñòÿ, à ïîñëå íåãî íà ñàéò ïðèäåò çàðåãèñòðèðîâàííûéó÷àñòíèê, êîòîðîìó âíîâü ïðåäëîæàò çàðåãèñòðèðîâàòüñÿ.Íåïîðÿäîê. Îäíàêî åñòü äîñòàòî÷íî ïðîñòîé âûõîä èç ýòîé ñèòóàöèè.Ïðîáëåìó ìîæåò ðåøèòü ïîêðûòàÿ ìõîì è ïàóòèíîé òåõíîëîãèÿ ïîäíàçâàíèåì SSI (Server Side Includes). SSI ïîçâîëÿåò ðàçáèòü âåá-ñòðàíèöóíà íåñêîëüêî áëîêîâ, êîòîðûå áóäóò ñîáðàíû ôðîíò-ýíäîì âîåäèíî âìîìåíò îáðàáîòêè çàïðîñà êëèåíòà. Íàïðèìåð, èñïîëüçóÿ SSI, òû äåëèøüãëàâíóþ ñòðàíèöó âåá-ñàéòà íà äâå ÷àñòè:# vi /var/www/index.phpmemcachedÏðè íàëè÷èè äîñòàòî÷íî áîëüøèõ îáúåìîâ ïàìÿòè õîðîøåéïðàêòèêîé áóäåò çàïóñê äåìîíà memcached ñ ôëàãîì '-L'. ðåçóëüòàòå äåìîí çàðàíåå ïîäãîòîâèò ê èñïîëüçîâàíèþâñþ âûäåëåííóþ åìó ïàìÿòü. Ýòî íåìíîãî ïîäíèìåò îáùóþïðîèçâîäèòåëüíîñòü ðàáîòû memcached çà ñ÷åò èñêëþ÷åíèÿíåîáõîäèìîñòè ïðîèçâîäèòü ïîñòîÿííûå âûäåëåíèÿ ïàìÿòèâî âðåìÿ ðàáîòû.Ýòî ðîâíî òà æå ñòðàíèöà, êîä àóòåíòèôèêàöèè êîòîðîé âûíåñåí â ôàéëauth.php, à âñÿ îñòàëüíàÿ ÷àñòü — â body.php. Èçþìèíêà æå çàêëþ÷àåòñÿâ òîì, ÷òî ïðèâåäåííûé âûøå â ÷åòâåðòîì øàãå êîä êýøèðîâàíèÿ òûïîìåùàåøü òîëüêî âî âòîðîé èç ýòèõ ôàéëîâ. Êàê ðåçóëüòàò âûðèñîâûâàåòñÿñëåäóþùàÿ êàðòèíà:1. ×åëîâåê ïðèõîäèò íà ñàéò â ïåðâûé ðàç. Ïðîèñõîäèò çàïðîñ ãëàâíîéñòðàíèöû âåá-ñàéòà ê nginx.2. Ñåðâåð nginx çàïðàøèâàåò ôàéë index.php ó áýê-ýíäà (Apache), âñòðå-÷àåò âíóòðè íåãî SSI-äèðåêòèâû è äåëàåò åùå *2* çàïðîñà ê áýê-ýíäó(auth.php è body.php).3. Ïîëó÷èâ çàïðîñû, Apache çàïóñêàåò PHP-èíòåðïðåòàòîð äëÿ îáðàáîòêèçàïðàøèâàåìûõ ôàéëîâ, â ðåçóëüòàòå ÷åãî (êðîìå âñåãî ïðî÷åãî) ñîäåðæèìîåòÿæåëîãî ôàéëà body.php ïîïàäàåò â êýø memcached.4. Îòâåò âîçâðàùàåòñÿ nginx, êîòîðûé îáúåäèíÿåò ôàéëû â îäèí index.php è îòäàåò èõ êëèåíòó.5. Ïîñëå ýòîãî íà ñàéò ïðèõîäèò çàðåãèñòðèðîâàííûé ó÷àñòíèê, ïðîèñõîäèòçàïðîñ index.php ó áýê-ýíäà (õîòÿ, ñêîðåå âñåãî, îí áóäåò âçÿò èç êýøàñàìîãî nginx), îäíàêî ê Apache óéäåò òîëüêî çàïðîñ ïðîñòîãî è ëåãêîãîauth.php, òîãäà êàê body.php áóäåò âçÿò èç êýøà memcached.Ñàìî ñîáîé ðàçóìååòñÿ, SSI íåîáõîäèìî àêòèâèðîâàòü â êîíôèãóðàöèîííîìôàéëå nginx ñ ïîìîùüþ îïöèè «ssi on», ïîìåùåííîé â ñåêöèþ«location /». Ñòîèò îòìåòèòü, ÷òî áëîê auth.php òàêæå ïîääàåòñÿ êýøèðîâàíèþ,íî äëÿ ýòîãî ïðèäåòñÿ ïðèñâàèâàòü âñåì çàðåãèñòðèðîâàííûìïîëüçîâàòåëÿì èäåíòèôèêàòîð, ñîõðàíÿòü åãî â êóêèñàõ è èñïîëüçîâàòüäëÿ ãåíåðàöèè óíèêàëüíîãî êëþ÷à memcached.КЛИЕНТСКАЯ ОПТИМИЗАЦИЯÝòà ñòàòüÿ ïîñâÿùåíà ñåðâåðíîé îïòèìèçàöèè âåá-ñàéòîâ, îäíàêî áûëîáû êîùóíñòâîì íå ðàññêàçàòü è î êëèåíòñêîé ÷àñòè ýòîãî ïðîöåññà. Ïîýòîìóìû êðàòêî ïðîáåæèìñÿ ïî ñïèñêó ðåêîìåíäàöèé, íàïðàâëåííûõ íàìèíèìèçàöèþ îáùåãî îáúåìà ïåðåäàâàåìûõ äàííûõ:1. Èñïîëüçóé gzip èëè deflate äëÿ ñæàòèÿ ñòðàíèö è äàííûõ. Äëÿ ýòîãîìîæíî çàäåéñòâîâàòü ìîäóëè HTTP-ñåðâåðîâ: ngx_http_gzip_module äëÿnginx, mod_compress äëÿ lighttpd è mod_deflate äëÿ Apache.2. Èñïîëüçóé óïàêîâùèêè äëÿ îïòèìèçàöèè è óäàëåíèÿ ëèøíåãî ìóñîðàèç HTML è JavaScript (îáû÷íî îíè óäàëÿþò âñå êîììåíòàðèè è ïðîáåëû,çàìåíÿþò èìåíà íà áîëåå êîðîòêèå è ò.ä., íàïðèìåð, web-optimizator,code.google.com/p/web-optimizator).3. Âûíîñè CSS è JavaScript-êîä â îòäåëüíûå ôàéëû, òîãäà îíè ñìîãóò áûòüçàêýøèðîâàíû áðàóçåðîì è ïðèìåíåíû ê äðóãèì ñòðàíèöàì (òàêæå èõìîæíî ðàçìåñòèòü íà îòäåëüíîì ñåðâåðå, ÷òîáû èõ çàãðóçêà ïðîèñõîäèëàïàðàëëåëüíî).4. Äëÿ áîëåå ïëàâíîé è êîððåêòíîé çàãðóçêè ñòðàíèöû áðàóçåðîì ðàçìåñòèçàãðóçêó CSS â íà÷àëå ñòðàíèöû, à JavaScript — â êîíöå.6. Íå çàáûâàé óñòàíàâëèâàòü çàãîëîâêè Expires è Cache-control, ÷òîáûCSS è JavaScript ìîãëè áûòü çàêýøèðîâàíû áðàóçåðîì.7. Íå ïðèìåíÿé JPG è PNG òîãäà, êîãäà ìîæíî îáîéòèñü GIF (íàïðèìåð,äëÿ ìåëêèõ èêîíîê).zXÀÊÅÐ 08 /139/ 10 131

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!