2010-09-12 23 views
6

Jestem bardzo ciekawy, w jaki sposób twoje aplikacje Railsowe zawierają javascript. Na przykład:W jaki sposób aplikacja rails zawiera javascript?

  • czy spakujesz cały swój kod js do jednego pliku i wyświetlasz go dla wszystkich żądań?
  • czy warunkowo ładujesz określone js w zależności od kontrolera/działania?
  • jakich narzędzi lub technik używasz, np .: asset_packager, kompresor yui, zębatki, implementacja inspirowana BigPipe?

Trochę tła: pracuję nad ogromną aplikacją Rails, która jest bardzo ciężka JS. Obecnie wszystkie js jest minified i podawane z jednego pliku. To sprawia, że ​​rzeczy są bardzo wygodne, ponieważ wszystkie frameworki i widżety są dostępne wszędzie. Zaczynam kwestionować to podejście, wydaje się trochę szalone, aby wszyscy użytkownicy płacili cenę za niektóre js, których mogą nigdy nie zobaczyć. Zaśmiecanie kodu za pomocą skryptu zawiera błędy i jest trudne, ponieważ duże części strony dostarczają treści za pośrednictwem ajax.

Ktoś ma jakieś porady do przekazania?

Wielkie dzięki!

Odpowiedz

1

Przede wszystkim wypróbuj tę wtyczkę dla przeglądarki Firefox: http://developer.yahoo.com/yslow/. Pomoże Ci to określić źródła powolności i przeanalizuje wykorzystanie skryptu i zaproponuje ulepszenia.

Zobacz także ten artykuł z Yahoo na temat sprawdzonych metod dla szybkich stron internetowych: http://developer.yahoo.com/performance/rules.html. Ta rada dotyczy wszystkich stron internetowych, a nie tylko szyn.

3

Istnieje kilka kompromisy do rozważenia:

  • Jeśli masz jeden duży plik JS to powinno być buforowane dla wszystkich stron. Ale jeśli tylko kilka stron używa JS, to nie jest dobrze.
  • Jeśli Twoje strony nie współdzielą JS, możesz użyć "w razie potrzeby" do załadowania pojedynczego JS każdej strony. Ale nie chcesz zbyt wielu obciążeń, ponieważ każde pobranie JS ma własny narzut.

Uwagi

  • Upewnij wszystkich JS będą buforowane na zawsze na swoich klientów. Użyj numerów wersji w nazwach plików lub adresach URL (foo.js? 123)
  • Upewnij się, że pliki JS są zminimalizowane.
  • Upewnij się, że serwer WWW ma włączone kodowanie gzip.
  • Możesz chcieć skorzystać z taniej sieci dostarczania treści dla swojego JS, takiej jak Amazonka Cloudfront lub jeden z jej konkurentów.

Odpowiedzi na konkretne pytania

Czy spakować cały swój kod js do jednego pliku i służyć dla wszystkich żądań?

Wszystkie żądania otrzymują duży plik JS z kodem biblioteki i JS używanym na większości stron. Niektóre określone strony również otrzymują dodatkowy plik JS.

czy warunkowo ładujesz określone js w zależności od kontrolera/działania?

Tak, dla kilku bardzo ciężkich stron JS te strony otrzymują dodatkowy plik JS. Wszystkie strony otrzymują plik REG JS i są buforowane/dostępne dla wszystkich stron.

jakich narzędzi lub technik używasz, np .: asset_packager, kompresor yui, zębatki, implementacja inspirowana BigPipe?

  • YUI Compressor
  • S3 dla obsługujących domenę assets.foo.com
  • natarcia zadania scalić/minimalizowanie wielu plików źródłowych JS
Powiązane problemy