2013-02-01 8 views
11

Po uruchomieniu jekyll --server cała witryna jest przebudowywana. Na wystarczająco dużej stronie zajmuje to wyjątkowo dużo czasu. Nawet z flagą --auto, która powinna uniemożliwić regenerację w całości strony, czas zakończenia jest dość długi (10+ sekund dla mnie, podobno w minutach dla niektórych). Jest to niedogodne podczas edytowania i podglądu pojedynczej strony. Chciałbym skrócić ten czas.Skróć czas generowania strony dla lokalnego serwera jekyll

Czy istnieje sposób ustalenia, dlaczego Jekyll trwa tak długo, jak ma to na celu odbudowanie strony?

Czy istnieją również zalecenia dotyczące edycji przepływu pracy, które pozwalają na krótką (er) pętlę zwrotną z Jekyll?

+0

Mógłbyś wyjaśnić, jeśli trzeba krótszy czas budowy tylko podgląd najnowszych zmian lokalnie (a więc „Preview build” do localhost: nie musi zawierać wszystkie posty)? A może naprawdę potrzebujesz rozbudowanej wersji z tysiącami postów? – cboettig

+0

Ponadto, nie oznacza to, że flaga '--auto' działa tylko wtedy, gdy serwer jekyll' --server' już działa podczas zmian. to znaczy, jeśli Twój serwer sieciowy cały czas uruchamia 'jekyll --server --auto', i wprowadzasz do niego swoje zmiany. Jekyll nie śledzi, które strony zmieniły się pomiędzy kolejnymi wywołaniami do 'jekyll --server'. – cboettig

+0

Zobacz także: https://github.com/jekyll/jekyll/issues/1855 –

Odpowiedz

3

Jest to powracający temat w numerze Jekyll's issue tracker on Github. Niestety nie jest to jeden z celów. Na przykład:

Wystarczy wyszukać słowami "kompilacji" i "czas" i będzie można znaleźć więcej. To trochę trudniejsze, niż wygląda, ponieważ istnieje możliwość zerwania linków.

Ponadto, jeśli używasz LSI, użyj najnowszej wersji, ponieważ była z nią powiązana, dzięki czemu jest znacznie szybsza.

Moja jedyna rada dla ciebie polega na sprawdzeniu, czy naprawdę potrzebujesz wszystkich tych wpisów (wiem, wiem), ponieważ to prawdopodobnie jedyna odpowiedź, którą otrzymasz z modułu do śledzenia problemów już teraz - coś, czego wszyscy chcemy do adresowania, ale nikt nie chce zacząć.

P.S .: Opublikuj swój problem w narzędziu do śledzenia problemów - gdy więcej osób narzeka, może być naprawiony.

+0

ma ktoś miał szczęście lub lepsze pomysły na przyspieszenie generacji? –

+0

Nie jestem tego świadomy. – agarie

+0

dziękuję za powrót ze mną, doceniam to. –

4

Nie mogę rozwiązać czasu potrzebnego do pełnej kompilacji strony, ale udało mi się radykalnie przyspieszyć tworzenie dokumentów i wprowadzanie zmian w układzie. Wszystko to zakłada pracę na komputerze lokalnym w celu edycji, a następnie wdrożenia na serwerze produkcyjnym. Twój przebieg może się różnić, jeśli masz inny proces.

Podstawową ideą jest użycie wielu katalogów źródeł jekyll, z których każdy wskazuje tę samą lokalizację wyjściową. W moim przypadku używam trzech. Jeden do tworzenia i edytowania postów (zwany "_projektami"), drugi do zmiany układu, projektu i funkcjonalności (nazywany "_dev") i ostatni zawierający zawartość pełnej strony (zwany "_main").

Górny poziom struktura katalogów wygląda następująco:

./_drafts 
./_dev 
./_main 
./html 

Plik _config.yml dla każdego źródła Jekyll jest konfiguracja z obserwacji wskazać Jekyll generowane wyjście do katalogu „html”:

destination: ../html 

do „_drafts” oraz katalogi „_dev” zawierają minimalną liczbę plików niezbędnych do ich naśladować wygląd i funkcjonalność „” _MAIN miejscu. Robię wszystko moja praca w tych dwóch katalogów z Jekyll biegu w zależności od tego jest opracowywane. Mój lokalny serwer sieciowy jest ustawiony tak, aby wskazać domenę lokalną (np http://jekyll-test/) do katalogu „html”, więc mogę zobaczyć, co się dzieje, a ja jestem dokonywania zmian.

Po zakończeniu edycji skopiuj nowo zaktualizowane pliki z "_dev" lub "_drafts" do odpowiadających im lokalizacji w "_main". Gdy pliki są już gotowe, wykonuję jeden końcowy przejazd przez jekyll w "_main". Dzięki takiemu podejściu trzeba tylko poczekać z długim czasem generowania witryny, zanim wdroży się witrynę do produkcji. Używam tego podejścia przez jakiś czas i stwierdzam, że robi to ogromną różnicę.

Istnieje kilka innych sposobów, aby zoptymalizować przepływ pracy:

  • Użyj dowiązania symboliczne, aby pomóc utrzymać wygląd i funkcjonalność „_drafts” i „_MAIN” zsynchronizowane.

    Jeśli jesteś na komputerze Mac lub Linux, konfiguracja łącza symboliczne wskazać ./_drafts/_config.yml do ./main/_config.yml i ./_drafts/_layouts do ./main/_layouts (Podobną funkcjonalność prawdopodobnie istnieć w systemie Windows, ale nie mogę mówić do niego). Z jakiegoś powodu jekyll nie będzie działał dobrze z niektórymi katalogami symbolicznie połączonymi. Na przykład na mojej instalacji mam katalog "css" na poziomie katalogu głównego, który nie działa jako łącze sym. Muszę mieć jego aktualną kopię we wszystkich lokalizacjach.

  • Utwórz skrypt wdrażania.

    Kiedy jestem gotowy do wdrożenia, nie uruchamiam bezpośrednio Jykylla. Napisałem mały skrypt wywołujący jekyll w katalogu "_main", przekazuję dane wyjściowe do mojego serwera produkcyjnego, a następnie powiadamia mnie, kiedy jest kompletny. Nie tylko nie trzeba czekać na jekyll, ale zmniejsza liczbę kroków wymaganych do wdrożenia witryny.

  • Twórz dodatkowe skrypty i narzędzia.

    Kopiowanie plików z katalogu "_dev" i "_drafts" nie jest wielkim problemem, ale jest to najlepsze miejsce do dodania automatyzacji. Na przykład mam skrypt wiersza poleceń, który kopiuje pliki "_config.yml" oraz katalogi "_layouts" i "css" z "_dev" na oba "_projekty" i "_main" (w razie potrzeby).

    Innym narzędziem na liście jest lokalna aplikacja internetowa, która przenosi posty z "_drafts" do "_main". Wszystko, co ułatwia przenoszenie plików i zmniejsza tarcie tworzenia i publikowania jest dobre.

  • Zastosowanie LiveReload

    działa lokalnie, jekyll --auto jest świetny do automatycznego generowania zmian podczas pracy na plikach. Naturalnym towarzyszem tego jest aplikacja o nazwie LiveReload. Obserwuje twój lokalny katalog "html" i uruchamia automatyczne przeładowanie przeglądarki po zmianie zawartości. Siłą tego jest to, że możesz zachować okno przeglądarki obok edytora tekstu i zobaczyć, że zmiany zachodzą automatycznie po zapisaniu pliku. Jest od czasu do czasu trochę niestabilna, ale po jej użyciu nie będziesz wiedział, jak żyłbyś bez niej.

+0

To całkiem miłe. Zasugeruję jeleńcom rozważenie tego pomysłu, gdy pojawi się dyskusja "powinniśmy ograniczyć czas kompilacji". :) – agarie

+0

Ładne rozwiązanie (s). –

Powiązane problemy