2012-05-25 24 views
9

Poszukuję sposobów na ułatwienie rozwoju Symfony 2 Assetic 1.0.2. Używam Assetic do zrzucania/publikowania moich aktywów.Tworzenie Symfony 2 Assetic development

Obecnie Ciągle wykonywania tego polecenia w tle:

php app/console assetic:dump --watch 

To bardzo pomaga, każdej zmiany wprowadzić w JS lub plików CSS zostanie automatycznie zrzucana do katalogu publicznego, gdzie zasoby są pobierane z przez przeglądarka.

Jednak mam problemy z tym:

  1. Jeśli dodać nowy plik CSS/JS, z jakiegoś powodu nie wrobieni. Muszę zatrzymać zegarek, wyczyścić pamięć podręczną i ponownie uruchomić zegarek.

  2. Jest to dość powolne, stale zużywa 5% -20% czasu procesora.

Czy istnieje alternatywa dla rozwoju z Assetic? Próbowałem już obsługiwać zasoby za pomocą kontrolera (use_controller: true dla Assetic), ale było jeszcze wolniej (ponieważ spójrzmy prawdzie w oczy, PHP nie służy do wyświetlania statycznych danych).

Odpowiedz

4

Dla mnie jest to najszybszy sposób na rozwój dzięki Assetic mogłem znaleźć. Próbowałem i próbowałem znaleźć lepszy przepływ pracy, aby przyspieszyć generowanie zasobów, ale nie znalazłem żadnego.

Istnieją pewne prace w oddziale mistrzowskiej Symfony2 na ResourceWatcher składnika, który mógłby pomaga w tej kwestii przez:

  1. Przyspieszenie procesu oglądania powołując się na rodzimym strażnika zasobów jak inotify
  2. Osadzanie problem, gdy zasoby są dodawane/usuwane, aby zostały poprawnie zrzucone.

Możesz oglądać postęp na komponencie w tym PR.

Mam nadzieję, że ktoś dostarczy kilka sztuczek, które przyspieszą rozwój dzięki pełnemu lub zupełnie innym procesom pracy.

Pozdrawiam,
Matt

1

w użyciu DÉVELOPPEMENT następująco:

php app/console assets:install web --symlink 
+1

Użyłem go, ale nadal pobiera pliki źródłowe powoli, myślę, że musiałbym określić ścieżki do '/ bundles/js/...', aby działał, co nie jest idealne dla produkcja. – Tower

+7

zasoby: instalacja i zasoby: zrzuty są dwiema różnymi rzeczami całkowicie – calumbrodie

3

Dla powolność, można uruchomić z --no-debug i --forks=4. Zainstaluj zależność Spork poprzez kompozytor i uruchom app/console assetic:dump --no-debug --forks=4.

Jeśli masz więcej rdzeni, dodaj więcej rozwidleń. Jeśli chcesz zachować core (s) free, zmniejsz liczbę. Nie wiem, dlaczego nie jest 4 razy szybszy - bez wątpienia nie jest zbyt inteligentny w przypisywaniu różnych funkcji do różnych rdzeni - ale to dopiero początek.

Niektóre rzeczy po prostu krótko próbowałem:

time app/console assetic:dump 

real 1m53.511s 
user 0m52.874s 
sys  0m4.989s 

time app/console assetic:dump --forks=4 

real 1m14.272s 
user 1m12.716s 
sys  0m5.752s 

time app/console assetic:dump --forks=4 --no-debug 

real 1m9.569s 
user 1m6.948s 
sys  0m5.844s 

nie jestem pewien, że to pomoże z --watch, jak --watch zużywa cały rdzeń na jego własne, bo while (true) w PHP.

1
  1. Skonfiguruj różne filtry dla rozwoju i produkcji. W produkcji chcesz, aby Twój JS i CSS były minifigurowane i brzydkie, ale to strata czasu podczas projektowania.

  2. Upewnij się, że assetic.debug ma wartość false. Zapewni to połączenie twoich plików JS i CSS, dzięki czemu wszystkie JS i CSS mogą zostać pobrane w jednym żądaniu HTTP.

  3. Jeśli używasz kontrolera (assetic.use_controller jest prawdą) i masz programisty przybornik Otwórz przeglądarkę, upewnij się, aby usuń zaznaczenie „Wyłącz cache” pole (w Chrome, pole wyboru jest na panelu sieci; w Firefox jest w panelu ustawień). Umożliwi to przeglądarce wysyłanie żądań typu "If-Modified-Since" - jeśli pliki nie zostały zmienione na serwerze, serwer zwróci 304 Not modified bez ponownej kompilacji zasobów, a przeglądarka skorzysta z najnowszej wersji z pamięci podręcznej przeglądarki.

  4. Nie używaj Assetic do ładowania plików z CDN. Pobierz pliki na serwer (ręcznie, za pomocą Bowera lub cokolwiek innego) lub załaduj je z CDN, dodając <script src=…> lub <link rel=stylesheet href=…> bezpośrednio do szablonu HTML.

+0

Dziwne, mimo że serwer daje 304, wysyła mimo to ładunek w moim przypadku. – hbogert