Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][css][php] Kilka plików css(js) w jednym rządaniu
Forum PHP.pl > Forum > Przedszkole
Gerwazy
Mam taki problem. Na mojej stronie są załączone kilkanaście plików js i kilkanaście css.
Mam pytanie, jak zrobić żeby w jednym żądaniu do serwera wysyłać wszystkie te pliki? Jak je złączyć?
thek
Albo wszystkie CSS lub JS wrzucasz do jednego dużego pliku, albo robisz jeden, który importuje wszystkie. Dla CSS to jeden plik typu wszystkie.css
  1. @import "url1";
  2. @import "url2";
  3. @import "url3";
Nie zapomnij o prawidłowych ścieżkach!
Dla JS najprościej zrobić plik wszystkie.php w którym include'ujesz je:
  1. <?php
  2. header("Content-Type: text/javascript");
  3. include "skryptA.js";
  4. include "skryptB.js";
  5. ?>

i potem go tylko wywołać:
  1. <script type="text/javascript" src="wszystkie.php"></script>
Gerwazy
Dzięki Thek. Spróbowałem te przykłady co napisałeś, lecz nie rozwiązało to mojego problemu.
1) Funkcja @import w css nie redukuje niestety ilości zapytań do serwera
2) Rozwiązanie z js bardzo mi się spodobało. I rzeczywiście z 22 żądań zostało 14.
Tylko problem w tym że to żądanie z js nie jest cachowane w przeglądarce sad.gif, więc tylko przy pierwszym otwarciu strony ta opcja wygrywa.
Zastanawiam się dlaczego firefox nie wrzuca do pamięci javascript, może dlatego że link do niego wyglada w taki sposób "http://mojastrona/media/js" ?
thek
Dopóki pliki będą fizycznie osobne, zawsze dostaniesz tyle połączeń, ile plików. To co pokazałem z JS jest bowiem skleceniem wielu plików do jednego. To co zrobiłem z JS można zrobić także z CSS, tyle że musisz wysłać inny nagłówek. A plik w ten sposób nie jest cache'owany bo to wynika ze specyfiki php. Arkusze stylów i skrypty JS mają niestety właściwości blokujące, jeśli o tym nie wiesz jeszcze. Strona jest zablokowana na tak długo, aż cały skrypt lub arkusz nie zostaną przetworzone. Wynika to z faktu "jednowątkowości" procesu przeglądarki i możliwej zależności między skryptami, gdzie wynik pierwszego skryptu może być konieczny jako argument dla skryptu numer 2. Z CSS jest podobnie. Zamień kiedyś kolejnością kilka plików CSS, a zobaczysz, że pewne elementy wyglądają inaczej. Po prostu pewne reguły mogą nadpisać inne. Przykładem byłoby wrzucenie masy skryptów CSS, a jako ostatni plik css resetujący własności wszystkich elementów.
Gerwazy
zmieniłem adres z "/media/js" na "/js/script.js" za pomocą rewrite rule i nadal przeglądarka nie wrzuca do pamięci pliku .js.
Podejrzewam że problem jest z nagłówkami odpowiedzi serwera.

Luknijcie proszę co może być nie tak z tymi nagłówkami:





Date Mon, 19 Jul 2010 10:57:06 GMT
Server Apache/2.2.9
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control max-age=86400, public
Pragma public
Content-Encoding gzip
Vary Accept-Encoding
Keep-Alive timeout=15, max=95
Connection Keep-Alive
Transfer-Encoding chunked
Content-Type text/javascript

thek
Lepiej zobacz na kiedy ustawiono Expires tongue.gif Na prawie 30 lat wstecz smile.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.