Autor | Zpráva | ||
---|---|---|---|
rad Profil * |
#1 · Zasláno: 14. 9. 2011, 15:23:24
rad bych se dozvedel vic o gzip nebo celkove jak resite kompresy stranek css javascriptu atd.
pridal jsem si na zacatek stranky toto <?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?> Rad bych ale zmensil i css a javascript jak to resite vy ? Vim ze to mozna ani nepotrebuju ale rad bych si to ted vyzkousel az to bude potreba - proste rad bych zmensil velikost stranek co nejvic vsemi moznymi prostredky - obrazky uz jsem komprimoval. diky |
||
Davex Profil |
#2 · Zasláno: 14. 9. 2011, 19:36:30
Pokud to podporuje hosting, tak by bylo asi vhodnější zapnout kompresi modulem mod_deflate v Apache. Některým starším prohlížečům by se neměla zasílat komprimovaná data - IE6 načte stránku až po reloadu, jinak tam není nic.
|
||
ShiraNai7 Profil |
#3 · Zasláno: 14. 9. 2011, 19:50:56
Mělo by stačit pouze toto, ne?
ob_start('ob_gzhandler'); Z dokumentace: Before ob_gzhandler() actually sends compressed data, it determines what type of content encoding the browser will accept ("gzip", "deflate" or none at all) and will return its output accordingly. All browsers are supported since it's up to the browser to send the correct header saying that it accepts compressed web pages. If a browser doesn't support compressed pages this function returns FALSE. |
||
Davex Profil |
#4 · Zasláno: 14. 9. 2011, 20:11:09
ShiraNai7:
Mělo by stačit pouze toto, ne? Také stačí, ale může to být potencionálně problematické. V některých starších verzích Apache se stávalo, že pokud byla zapnutá komprese mod_deflate, tak se vinou chybné detekce komprimovalo podruhé a prohlížeče nic nezobrazily. Pokud chce rad komprimovat i externí CSS a JavaScripty, tak pro to není PHP vhodné. |
||
rad Profil * |
diky takze to co delam je blbost ?
muj hosting nepodporuje zlib do htacces - takze se to snazim resit na strane aplikace. takze pokud chci komprimovat css a javascript php na to neni to prave ? jak tedy na to ? napriklad YUI compressor ... ? taky by me zajimalo jak to resite treba s expiraci .. diky za namety a rady Moderátor Majkl578: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
|
||
rad Profil * |
#6 · Zasláno: 14. 9. 2011, 23:33:58
zkousel jsem aplikovat cache na font face pridal jsem do .htaccess tohle
<FilesMatch "\.(eot|woff|ttf|svg)$"> Header set Expires "Thu, 15 Apr 2020 20:00:00 GMT" </FilesMatch> Nezda se mi ale ze to funguje... Jeste dalsi otazka jak napriklad resite cache pro Jquery - je jasne ze ji nebudu moc menit mozna nekdy aktualizovat verzi.. Co si myslim ze bych mel / chtel udelat - vsechno css a javascript udelat co nejmensi - optimalizovat - pak gzip pro css html javascript a pak vyresit cache - obrazky javascript css zatim mi prijde ze jsem tak napul cesty.. |
||
Davex Profil |
#7 · Zasláno: 14. 9. 2011, 23:39:24
rad:
„diky takze to co delam je blbost ?“ Není to blbost. Pokud není na webserveru zapnuté mod_deflate, tak je to nejsnadnější možnost jak komprimovat výstup skriptu. „takze pokud chci komprimovat css a javascript php na to neni to prave ?“ Pro komprimaci statických souborů bych raději použil předkomprimované soubory v kombinaci s pravidly mod_rewrite - něco takového používá CMS Drupal 7. Ale musí se nějak hlídat změny a synchronizovat komprimované kopie. „napriklad YUI compressor ... ?“ To je odlišný přístup ke kompresi než je gzip. Pokud bys chtěl oba přístupy zkombinovat, tak můžeš porovnat komprimovanou velikost (JavaScriptu) pomocí http://compressorrater.thruhere.net/. Nejdřív se ale zamysli nad tím, proč to vlastně děláš a zda jsou externí stylopisy a skripty opravdu tak objemné, že to stojí za to. Pokud je správně nastavené kešování, tak se obvykle načtou jen jednou při prvním načtení. |
||
rad Profil * |
#8 · Zasláno: 14. 9. 2011, 23:48:33
diky, jak jsem psal na zacatku je to takovy test toho jak pristupovat k optimalizaci stranek.
prave treba cachovani font face by se mi i ted hodilo protoze browser zobrazi na malou chvilku default font a az pak nacteny font ... to si myslim ze by se dalo resit takto <FilesMatch "\.(eot|woff|ttf|svg)$"> Header set Expires "Thu, 15 Apr 2020 20:00:00 GMT" </FilesMatch> az na to ze to nejspis nefunguje. Rad bych taky cachoval knihovnu jquery to se mi zda take rozumne a pak protoze css treba budu nejak menit by me zajimalo jak to resite vy jinak diky za pradchozi poznaky |
||
rad Profil * |
#9 · Zasláno: 14. 9. 2011, 23:57:59
jeste posledni otazka
<meta name="Expires" content="0" /> |
||
rad Profil * |
#10 · Zasláno: 15. 9. 2011, 11:10:26
takze po radach jsem si rekl ze nejdulezitejsi je redukovat velikost obrazku,
potom nejak minifikovat - odstranit zbytecnosti z css a javascriptu - v css to delam pomoci php javascript na to jsem zatim neprisel co je nejlepsi. pak vse zazipovat a resit nejak rozumne cache. taky predkladam moje reseni v htaccess co si myslite ? <IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text\.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image\.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </IfModule> <FilesMatch "\.(eot|woff|ttf|svg)$"> Header set Expires "Thu, 15 Apr 2020 20:00:00 GMT" Header set Cache-Control "max-age=2592000" </FilesMatch> <FilesMatch ".(js|css|txt)$"> Header set Cache-Control "max-age=604800" </FilesMatch> <FilesMatch ".(flv|swf|ico|gif|jpg|jpeg|png)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$"> Header unset Cache-Control </FilesMatch> ja vidim problem v tom ze nekesuju php ... Snad premyslim spravne kdyz ne diky za upozorneni. |
||
rad Profil * |
#11 · Zasláno: 15. 9. 2011, 14:25:54
a tady je myslim dobre reseni pro css
<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); header('Content-type: text/css'); ob_start("compress"); function compress($buffer) { /* remove comments */ $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); /* remove tabs, spaces, newlines, etc. */ $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); return $buffer; } /* css files */ include('cssreset.css'); include('style.css'); ob_end_flush(); ?> |
||
Davex Profil |
#12 · Zasláno: 15. 9. 2011, 19:13:14
rad:
„Rad bych taky cachoval knihovnu jquery“ Prohlížeče standardně kešují všechno, co není zakázáno kešovat. <meta name="Expires" content="0" /> co presne vyjadruje tento meta tag
Že platnost obsahu stránky vypršela - tzn. že se má příště načíst ze serveru a ne z keše prohlížeče. „<IfModule mod_gzip.c>“ Deset let starou verzi Apache už nikde neprovozuji, takže ti s mod_gzip moc neporadím, ale je nesmysl komprimovat gzipem obrázky, které jsou už komprimované - měl bys používat jen formáty gif, jpeg, png. Dále by mělo být v hlavičce Cache-Control povoleno kešování kdekoliv (i na kešujícím proxy serveru):
Header set Cache-Control "public, max-age=2592000" „tady je myslim dobre reseni pro css“ Nemyslím si. Prohánět soubory při každém načtení PHP skriptem moc serveru neulehčí. |
||
Kajman_ Profil * |
#13 · Zasláno: 15. 9. 2011, 21:56:57
Asi je to trosku off topic, ale kontrole optimálnosti obrázků, skriptů a přenosů může pomoci page speed do firebugu. Jen to občas není neomylné.
|
||
Časová prodleva: 13 let
|
0