Autor Zpráva
rad
Profil *
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
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
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
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 *
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
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 *
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 *
jeste posledni otazka

<meta name="Expires" content="0" />
co presne vyjadruje tento meta tag - vim spis patri do html sekce
rad
Profil *
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 *
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
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 *
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é.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0