Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP Kompresja CSS/JS w htaccess, php (cgi-bin)
dotangelo
post 28.07.2009, 20:49:20
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 12.04.2007
Skąd: Wągrowiec

Ostrzeżenie: (0%)
-----


W sumie nie wiedziałem gdzie ten temat napisać gdyż pasuję on do wielu tematów, stwierdziłem że najbardziej dotyczy PHP więc piszę właśnie tutaj.

Wiem, że tematów o kompresji było sporo, jednak nie w tym rzecz. Jak kompresję przeprowadzić wiem, sęk w tym, że z CGI to po prostu nie działa.

Od 2 dni próbuję zrobić kompresję plików css/javascript na podstawie .htaccess, czyli prostego DEFLATE.
Gdyby PHP było skompilowane jako moduł apache, wszystko było by ok, ale jest jako cgi-bin i przypuszczam że dlatego muszę poszukać innego rozwiązania.

O tyle, o ile funkcje jak ob_start('ob_gzhandler') działają, o tyme gzcompress() już nie, tak samo reguły w .htaccess (próbowałem około 23 różnych reguł do kompresji [!]). Za każdym razem dostaję ISE (kod 500).

Myślę, że jest coś ważnego o czym nie wiem, jeśli chodzi o kompresję oraz CGI. Mam nadzieję, że ktoś tutaj wie o co chodzi i podzieli się ze mną tą wiedzą smile.gif

tutaj znalazłem coś takiego:
Cytat
# uncomment this line to enable site wide gzip to greatly decrease load times
# may cause 500 server errors on servers running php in cgi mode
#---------------------------------------- GZIP BEGIN ------------------------------------#
# php_value output_handler ob_gzhandler
#---------------------------------------- GZIP END --------------------------------------#


IF THE SERVER IS RUNNING PHP AS CGI
THAT LINE MUST REMAIN COMMENTED OUT

as php cgi will nor run gzip

i also might add that this server is running Suhosin-Patch
and if that was installed wrong and or setup wrong
that also could be part of your problem.


Czyli CGI nie odpali Gzip, dlaczego, i jak to obejść ?

Ten post edytował dotangelo 28.07.2009, 20:59:07
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
erix
post 28.07.2009, 21:04:19
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Czyli CGI nie odpali Gzip, dlaczego, i jak to obejść ?
  1. nie odpali
  2. bo Apache nie rozumie wtedy php_value z htaccess (przy ISAPI dodawana jest nowa dyrektywa)
  3. gzcompress" title="Zobacz w manualu PHP" target="_manual nie działa? Jeśli nie - chyba czeka Cię rekompilacja PHP, jeśli działa - możesz spróbować w php.ini włączyć kompresję. A co do pozostałych plików - chyba było do Apache coś takiego, jak mod_gzip


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
dotangelo
post 28.07.2009, 21:18:50
Post #3





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 12.04.2007
Skąd: Wągrowiec

Ostrzeżenie: (0%)
-----


Rozumiem, dziękuję bardzo, to rozjaśnia parę rzeczy.
PHP nie mogę za bardzo przekompilować gdyż jest to zewnętrzny hosting, a kontakt z adminem się urwał - będę musiał zmienić hosting, ale dopiero jak mi wygaśnie.
Skoro działa ob_start('ob_gzhandler'), to mogę załączać pliki z użyciem tej funkcji, po prostu napisałbym odpowiedni plik PHP. Jednak są dwie kwestie:
-czy za każdym razem kompresować taki plik, czy po prostu zapisać jego "zGZIPowaną" wersję, aby nie obciążać interpretera?
-o tyle, o ile działa dla domeny głównej, to dla subdomeny za pieruna nie mogę odpalić tego kodu (ani tego, ani ŻADNEGO kodu PHP). Czy aby odpalić PHP dla subdomeny (http://static.mojastrona.pl/test.php) trzeba mieć jakaś dodatkową konfigurację ? (dodam tylko, że mimo iż subdomena nazywa się static, to nie wykonywałem na niej żadnych dodatkowych czynności jak zmienianie nagłówków czy wyłączanie funkcji).
Go to the top of the page
+Quote Post
erix
post 28.07.2009, 21:32:28
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
-czy za każdym razem kompresować taki plik, czy po prostu zapisać jego "zGZIPowaną" wersję, aby nie obciążać interpretera?

No, dobrze myślisz - oczywiście to drugie. Gdzieś była klasa gotowa do tego, chyba na blogu twórców YUI.

Cytat
-o tyle, o ile działa dla domeny głównej, to dla subdomeny za pieruna nie mogę odpalić tego kodu (ani tego, ani ŻADNEGO kodu PHP). Czy aby odpalić PHP dla subdomeny (http://static.mojastrona.pl/test.php) trzeba mieć jakaś dodatkową konfigurację ? (dodam tylko, że mimo iż subdomena nazywa się static, to nie wykonywałem na niej żadnych dodatkowych czynności jak zmienianie nagłówków czy wyłączanie funkcji).

Powiem tak - to już działka admina.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
dotangelo
post 28.07.2009, 22:09:19
Post #5





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 12.04.2007
Skąd: Wągrowiec

Ostrzeżenie: (0%)
-----


Widzisz, z adminami jest tak:
Cytat
(22:29:44) niestety nie znam sie na tego typu rzeczach
(22:29:50) do czego to Panu potrzebne
(22:37:33) prosze napisac
(22:37:37) po angliesku
(22:37:38) wiadomośc
(22:37:40) ja mu przekaże
(22:37:46) przekaże do supportu

Dlatego będę musiał opracować hack na hacku smile.gif

OK, mam rozwiązanie.

- Pobieramy gzip.exe
- odpalamy w linii komend:
Kod
gzip.exe -9 style.css

- otrzymujemy plik style.css.gz, który wysyłamy na serwer
- otwieramy .haccess:
- wprowadzamy:
Kod
AddEncoding gzip .gz
<Files *.css.gz>
  ForceType text/css
</Files>

<Files *.js.gz>
  ForceType text/javascript
</Files>

Nie wiem czy będzie to działało z subdomenami, sprawdzę jutro <= działa z subdomenami.

W kodzie HTML dajemy tylko:
  1. <link rel="stylesheet" href="screen.css.gz" type="text/css" media="screen" charset="utf-8"/>


Zalety takiego rozwiązania:
- kod nie musi byc kompresowany za każdym razem gdy użytkownik wyśle request (z tego co się orientuję przeglądarka zajmuje się takim kodem, więc nie obciąża serwera)
- kod oczywiście zajmuje mniej miejsca (nawet 85% mniej!)

Oczywistą wadą jest oczywiście to, że po każdej zmianie pliku css należy powtórzyć kompresję oraz wysłać nowy plik ".gz" na serwer.
Rozwiązanie znalazłem tutaj

Ten post edytował dotangelo 28.07.2009, 22:41:08
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.06.2025 - 15:18