Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]KOmpresja gzip
Forum PHP.pl > Forum > Przedszkole
marcio
http://czasopisma.magazynyinternetowe.pl/a...tryn_w_php.html
http://www.php.net/ob_gzhandler
http://pl.wikibooks.org/wiki/PHP/Obs%C5%82uga_ciastek

Czy to jest naprawde tak proste jak pokazuja??
Czy to duzo daje??
Warto to stosowac prosze mi odpowiedziec czy to duzo da jak dodam do cms??

phpinfo() daje mi
Cytat
with-zlib-dir=/usr/include'
--with-zlib-dir=/usr'
Registered Stream Filters string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, convert.iconv.*, bzip2.*, zlib.*
ZLib Support enabled

Czyli rozumiem ze na serverze jest.

P.S jesli mam takie cos w live http headers:
Cytat
Accept-Encoding: gzip,deflate

Znaczy ze jest juz wlaczona i moja strona jest juz komprensowana czy mam sprawdzic za pomoca ini_get()questionmark.gif

P.S2
  1. <?php
  2.  if (!ini_get('zlib.output_compression')) echo('Gzip nie ma'); else echo('gzip jest');
  3. ?>

Jest wylaczona czyli jak wlacze czy cos to da i warto czytalem ze sie bardziej obciaza server czy zle przeczytalem?
sobstel
Accept-Encoding to nagłówek żądania od klienta tj. przeglądarki. O tym czy twoja strona jest kompresowana świadczy nagłówek odpowiedzi Content-Encoding.
marcio
Takowego nie mam czyli kompresji nie mam tak jak mowilem warto ja wlaczyc nie bede mial zadnych problemow a strona naprawde bedzie sie szybciej ladowac

Tzn ona juz sie szybko laduje ale jak bedzie 2-3k user'ow wtedy se martwie o ile w ogole bedzie ale wole zeby chodzila jak najszybciej
nithajasz
Kompresja potrafi zaoszczedzić Ci nawet kilkanaście do kilkudziesięciu procent transferu. A co do obciążenia serwera to normalne, w końcu gdzieś to musi być kompresowane ale dajesz niski stopień kompresji i obciążenie jest nie duże a zyskujesz na tym.
marcio
Wiem ze lvl kompresji ida od 1-9 wiec dam 1 a jak obciazy server to nie wyjdzie na to samo??

Czy jak moze ktos to troche opisaC??

Chce zobaczyc czy widac roznice wiec na poczatku pliku daje
  1. <?php
  2. if (!ini_get('zlib.output_compression')) {
  3. ini_set('zlib.output_compression_level', 1);
  4. echo('Wlaczono gzip');
  5. ob_start('ob_gzhandler');
  6. }
  7. include('config1.php');
  8. ?>

Jesli zakomentuje 2 ob_start() dalej to samo strony widac zero bledow a w live http headers mam :
Cytat
Content-Encoding: gzip

Co robie zle??
nithajasz
Cytat
Wiem ze lvl kompresji ida od 1-9 wiec dam 1 a jak obciazy server to nie wyjdzie na to samo??


Jakby wychodziło na to samo to nikt by tego nie używał tongue.gif

  1. <?php
  2. if (!ini_get('zlib.output_compression')) {
  3. ini_set('zlib.output_compression_level', 1);
  4. echo('Wlaczono gzip');
  5. ob_start('ob_gzhandler'); // w tym miejscu wlaczasz kompresje
  6. }
  7. //ob_start(); // jesli zakomentujesz i tak bedzie wlaczona i bedziesz mial to w naglowku 
  8. include('config1.php');
  9. ?>
marcio
Nic dalej to samo czytalem ze tak sie czasami dzieje ale dlaczego ze ludzie wtedy przerzucaja sie na mod_deflate
Odrazzu mowie ze ini_set() i ini_get() mam wlaczone wiec cos jest z komprecja a zlib na servie jest

OK juz cos dziala:
  1. <?php
  2. ini_set('zlib.output_compression', true);
  3. ini_set('zlib.output_compression_level', 5);
  4. ob_start('ob_gzhandler');
  5. ?>

ALe nie wiedzie roznicy ani przy lvl 1 ani przy 5 a najlepsze jest to ze chyba strona laduje sie troszeczke szybciej moze ktos ze mna zrobic testy niech napisze na gg 4854727 to zrobimy z i bez

OK tylko teraz mi nachodzi na glowe jedna rzecz chce miec w pliku config.php zmienna ktora bedzie mowila czy gzip ma byc wlaczony wiec robie tak:
  1. <?php
  2. include('config1.php');
  3.  
  4. if($gzip == 2) {
  5.  
  6. ini_set('zlib.output_compression', true);
  7. ini_set('zlib.output_compression_level', 1);
  8. ob_start('ob_gzhandler');
  9. } 
  10. else ob_start();
  11. ?>

Wiem ze zle wiem ze przed ob_start() nic nie moze ale w takim razie jak to zrobic??
nithajasz
Tak na przykładowej stronie na localu zrobiłem test.

Z gzip :
Rozmiar strony : 1,24 KB (1 266 bajtów)
Czas ładowania strony : 0.857 s

Bez gzip :
Rozmiar strony : 3,57 KB (3 651 bajtów)
Czas ładowania strony : 0.719 s

Poziom kompresji - 1.
marcio
W sumie racja strobna glowna cms:
Bez gzip:
Cytat
Content-Length: 7256

Z gzip:
Cytat
Content-Length: 3003

Ale jak zrobic ustawienia pierwszy raz sie w to bawie
nithajasz
Ja to robie w taki sposób, korzystam z klasy:
  1. <?php
  2. class GZip {
  3. var $compress, $uses_gzhandler;
  4.  
  5. function __construct() {
  6. $this -> compress = false;
  7. $this -> uses_gzhandler = false;
  8.  
  9. $phpver = phpversion();
  10. $useragent = $_SERVER['HTTP_USER_AGENT'];
  11.  
  12. if (USE_GZ) {
  13. if ($phpver >= '4.0.4pl1' && (strstr($useragent,'compatible') || strstr($useragent,'Gecko'))) {
  14. if (extension_loaded('zlib')) {
  15. $this -> compress = true;
  16. $this -> uses_gzhandler = true;
  17. ob_start('ob_gzhandler');
  18. }
  19. }
  20. else if ($phpver > '4.0') {
  21. if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
  22. if (extension_loaded('zlib')) {
  23. $this -> compress = true;
  24. header('Content-Encoding: gzip');
  25. }
  26. }
  27. }
  28. }
  29. if (!$this -> compress) ob_start();
  30. }
  31.  
  32. public function buffer_end_clear() {
  33. }
  34.  
  35. public function display() {
  36. if (!$this -> uses_gzhandler && $this -> compress) {
  37. $gzip_size = ob_get_length();
  38. $gzip_contents = ob_get_clean();
  39. echo "x1fx8bx08x00x00x00x00x00", substr(gzcompress($gzip_contents, 1), 0, - 4), pack('V', crc32($gzip_contents)), pack('V', $gzip_size);
  40. }
  41. else ob_end_flush();
  42.  
  43. }
  44. }
  45. ?>


W configu zamieszczam

  1. <?php
  2. define('USE_GZ', true); /* wlaczona kompresja gzip? */
  3. ?>


A później na stronie

  1. <?php
  2. include_once 'includes/config.php' ;
  3. $gzip = new GZip;
  4.  
  5. ?>
  6.  
  7. tresc strony
  8.  
  9. <?php
  10. $gzip -> display();
  11. ?>
marcio
Hmm a pomozesz bez zadnych KLas nie lubie ich i nie chce uzywac ja jak dam include na sama gore strony nie widac

Nom dokladnie tak mi sie dzieje nie moge dac include() przed to jak to zrobic?
nithajasz
http://wortal.php.pl/wortal/artykuly/proce...stronie_serwera

Czytałeś to? Powinno pomóc smile.gif
marcio
Ogolnie + dla ciebie

Ale jest maly problem nie ze chce gotowca ale znam te arty jednak nie rozumiem zabardzo zasady buforowania czy moglbys pomoc bede ci wdzieczny pierwszy raz kompletnie nie wiem co i jak smile.gif
nithajasz
Nie lubie pisać czegoś co już jest napisane tongue.gif

Masz poczytaj jak działa buforowanie http://forum.creamsoft.com.pl/index.php?na...opic&t=4853

Taki, krótki art ale dość dobrze jak na ogólną zasade działania buforowania ją przedstawia.
marcio
Chyba chodzi o ten przyklad http://wortal.php.pl/phppl/wortal/artykuly...stronie_serwera
Nie wiem sprobuje poczytam te arty jak cos zwroce sie na forum

Przy okazji chcialem sie zapytac na czym polega cachowanie zapytan sql jak sie to robi??
nithajasz
http://www.eioba.pl/a74724/cachowanie_zapytan_sql_w_php

Dziś dzień rzucania linkami..
marcio
Sorki ale musze zapytac to jak pomoze ktos??

questionmark.gifquestionmark.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.