Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jeden duży, a wiele małych plików .js, Co lepsze?
czarek1986
post 12.04.2010, 21:57:38
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

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


Witam.

Zastanawiam się co jest lepsze. Czy lepiej jest includować do strony jeden duży plik javascript ze wszystkimi instrukcjami, czy może lepiej jest je pogrupować na wykonywane funkcje i podzielić na pare plików? Które rozwiązanie jest wydajniejsze, praktyczniejszcze itp?

Mi wydaje się co do praktyczności, że dzielenie na pliki jest dobrym pomysłem bo pozwala uporządkować skrypt, tak jak dzieli się na wiele plików wszelkie duże aplikacje. Może mieć to jednak wady w przypadku wczytywania plików, gdyż jeden wczytujący się bardzo długo, może opóźnić działanie pozostałych skryptów nawet o kilkadziesiąt sekund.

A jak wy myślicie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
wookieb
post 12.04.2010, 22:06:53
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Na początku pracuj na wielu, pod koniec połącz wszystko w jeden.

Cytat
gdyż jeden wczytujący się bardzo długo, może opóźnić działanie pozostałych skryptów nawet o kilkadziesiąt sekund.

Identycznie działa to w drugą stronę, w końcu trzeba załadować taką samą ilość informacji.

Każdy zewnętrzny plik to żądanei dla serwera na które musi odpowiedzieć. Im więcej żądań tym gorzej. Dla twojej ciekawości spójrz w zakładkę Sieć w Firebugu i przejrzyj linię czasową ładowania plików JS

P.s. Na ten myk o którym mówisz wyżej jest jedna rada. Umieścić taki plik (raczej wymagany sam jeden plik js) na koniec sekcji BODY - takie są zalecenia m.in Yahoo

Ten post edytował wookieb 12.04.2010, 22:13:26


--------------------
Go to the top of the page
+Quote Post
WebSee
post 12.04.2010, 22:09:32
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 3
Dołączył: 6.12.2009

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


Ja bym zrobił kilka mniejszych plików, dlaczego?
1. Łatwiej się odnaleźć w mniejszych plikach
2. Jeżeli na danej podstronie nie używasz któregoś z plików, po prostu go nie includujesz

Może gdy ten "duży" plik będzie miał, 1000 linijek, to jeszcze będziesz mógł się w nim połapać, lecz jeżeli mowa to o 10 - 100 tyś linijek, to zdecydowanie lepszych jest kilka mniejszych plików, ale bez przesady, nie żeby robić np 100 plików po 10 linijek
Go to the top of the page
+Quote Post
vokiel
post 12.04.2010, 22:32:29
Post #4





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Nie widzę większego sensu ładowania pliku z x funkcjami, z których na danej podstronie zostanie użyta tylko jedna. To jest nadmiarowość, której raczej trzeba unikać.
Poza tym edycja jednego tasiemca a edycja kilku plików, konkretnie powiązanych z daną stroną, z sensownym nazewnictwem to całkiem inna bajka.

Jeśli chodzi o dołączanie kilku plików do jednej strony. Oczywiście do takiej konieczności na pewno dojdzie. Rozwiązanie jest proste, łączenie tych plików w jeden, do tego cache i wszystko dobrze działa.


--------------------
Go to the top of the page
+Quote Post
czarek1986
post 12.04.2010, 23:22:42
Post #5





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

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


Może wyjaśnie czemu zadałem te pytanie i wtedy pomożecie mi wybrać rozwiązanie. Otóż chcialbym zbudować (co ostatnio jest modne smile.gif) cmsa opartego o extjs. Co to jest nie bede pisał, bo kto ma wiedziec to już pewnie ją zna lub znajdzie w necie informacje smile.gif. Jak wiadomo działa ona praktycznie całkowicie w oparciu o ajax, więc kodu javascriptowego jest bardzo dużo, dodatkowo jakieś pluginy itp. Z tego powodu pomyślałem, że jeśli cms będzie oparty o widok borderLayout, a poszczególne funkcje będą otwierane w formie zakładek, to kod każdej zakładki mógłby się znaleźć w oddzielnym pliku. Pozwoliło by to w przyszłości łatwiej dodawać nowe możliwości do poszczególnych funkcjonalności.
Go to the top of the page
+Quote Post
flashdev
post 13.04.2010, 01:17:49
Post #6





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Google w narzędziach dla webmasterów pisze:

Cytat
Połącz zewnętrzne pliki JavaScript
Liczba plików JavaScript pochodzących z adresu *****.pl wynosi: 2. Należy je połączyć w jak najmniejszą liczbę plików:


Wychodzi na to, że google zaleca małą ilość plików .js i ja bym się trzymał tej wersji. Myślę, że wiedzą co piszą.

Ten post edytował flashdev 13.04.2010, 01:19:12


--------------------
Go to the top of the page
+Quote Post
melkorm
post 13.04.2010, 13:15:02
Post #7





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Najlepszym rozwiązaniem jest zmniejszenie ilości załączanych plików do jak najmniejszej liczby czyli po jednym pliku JS / CSS.

Ja to zrobiłem tak iż mam w pliku *.ini spis resourców, takich jak jQuery, tinymce, swfuploader, swfobject ... itp. W momencie gdy potrzebuje jakiegoś resource na podstronie wrzucam
  1. $thid->_addViewResource( ); // array / string resourców


Do tego w pliku *.ini mam hierarchie resource'ów - który po którym dziedziczy, czyli jak chce coś skorzystać z jQuery nie muszę się martwić już o załączenie jQuery, robi to za mnie skrypt.

Teraz najważniejsze: gdy ładowane są resourcy do strony tworzony jest plik _cached_md5. (css / js) który zawiera połączone pliki js lub css które wykorzystuję na stronie, na wersji development plki się zawsze tworzą i nie jest dokonywana kompresja pliku (wycinanie białych znaków itp~~), zaś na produkcji pliki są cachowane, oczywiście dla każdej sytuacji (innej kombinacji resourców) jest inny plik, ale zawsze jeden i do tego skompresowany.

Wydaje mi się że jest no najlepsze wyjście niż robienie to ręcznie lub załączania wielu plików, chociaż ciekawi mnie jakie mogą być tego minusy smile.gif

Edit:
Plusy:
- możliwość posiadania wielu plików js / css, nawe dla każdej podstrony inny tylko to co potrzebujemy - a na stronei zawsze będzie jeden
- łatwość w dorzucaniu nowych plików, zamiast np. dorzucać 10 plików wpisujemy tylko nazwę resource'u jaki chcemy dodać

Minusy:
- kontrolowanie kolejności plików w pliku ini
- gdy brak PHP w wersji 5.3 mniejsza możliwość dodawania plików oddzielnie z wykorzystaniem pliku ini (ustawianie flagi na append powoduje że plik dodaje się normalnie i oddzielnie od tego generowanego)

Ten post edytował melkorm 13.04.2010, 13:25:19


--------------------
Go to the top of the page
+Quote Post
flashdev
post 13.04.2010, 18:41:45
Post #8





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Rozwiązanie jest na pewno bardzo wygodne a jednocześnie wydajne, jednak podstawowoym minusem tego rozwiązania jest to, że trzeba sobie napisać odpowiedni kod do takiej obsługi tych plików.
Chyba, że polecisz coś gotowego?


--------------------
Go to the top of the page
+Quote Post
melkorm
post 13.04.2010, 19:58:42
Post #9





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Ja użyłem gotowych klas do zmniejszania plików CSS i JS, wystarczy poszukać trochę w necie by takie znaleźć, zaś całą obsługę napisałem sam, ale z użyciem ZF.


--------------------
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: 19.07.2025 - 02:25