Я написав цей біт путівника.
Ви точно не хочете жити компілювати у виробництві.
Коли ви компілюєте, це відбувається:
Кожен запит на файл у / активах передається до Зірочок. За першим запитом для кожного активу він компілюється та кешується в будь-якому Rails, який використовується для кешу (зазвичай файлова система).
При наступних запитах Зірочки отримують запит і повинні шукати відбиток файлу з ім'ям пальця, переконайтесь, що файл (зображення) або файли (css та js), що складають актив, не були змінені, а потім, якщо є кешована версія, служать цьому.
Це все в папці активів і в будь-яких папках постачальників / активів, які використовуються плагінами.
Це багато накладних витрат, оскільки, чесно кажучи, код не оптимізований для швидкості.
Це матиме вплив на швидкість переходу активу по клієнту та негативно вплине на час завантаження сторінки вашого сайту.
Порівняйте із замовчуванням:
Коли активи попередньо компілюються, а компіляція вимкнена, активи збираються та відбивають пальці на public/assets
. Зірочки повертають таблицю відображення простої до відбитків файлів файлів до Rails, і Rails записує це у файлову систему. Файл маніфесту (YML в Rails 3 або JSON з рандомізованим іменем в Rails 4) завантажується в пам'ять Rails при запуску і кешується для використання методами помічників активів.
Це робить генерацію сторінок з правильними відбитками даних дуже швидкими, а обслуговування самих файлів - швидким веб-сервером із файлової системи. Обидва значно швидше, ніж компіляція в реальному часі.
Щоб отримати максимальну перевагу конвеєра та відбитків пальців, вам потрібно встановити дальші майбутні заголовки на веб-сервері та ввімкнути стиснення gzip для js та css-файлів. Sprockets записує gzipped версії об’єктів, якими ви можете встановити ваш сервер на використання, усуваючи необхідність цього робити для кожного запиту.
Це допоможе клієнту вивести активи максимально швидко та в найменшому розмірі, прискоривши відображення сторінок на клієнті та зменшивши (з подальшим майбутнім заголовком) запити.
Тож якщо ви збираєтеся жити, це:
- Дуже повільно
- Не вистачає стиснення
- Це вплине на час візуалізації сторінок
Проти
- Якнайшвидше
- Стиснута
- Видаліть підслуховування стиснення з сервера (необов’язково).
- Мінімізуйте час візуалізації сторінок.
Редагувати: (Відповідь на коментар)
На перший запит трубопровід може бути змінений на попередній збір, але для цього є деякі основні перешкоди. Перший полягає в тому, що повинна бути таблиця пошуку для відбитків імен з відбитками пальців або помічники методів є занадто повільними. Під час сенаріу на компіляцію за запитом потрібно було б додати спосіб додати до таблиці пошуку, коли кожен новий актив збирається або запитується.
Крім того, хтось повинен буде платити ціну повільної доставки активів за невідомий проміжок часу, поки всі активи не будуть зібрані та встановлені.
За замовчуванням, коли ціна складання всього оплачується за один раз, не впливає на публічних відвідувачів і гарантує, що все працює, перш ніж все вийде наживо.
Укладення угод полягає в тому, що це додає багато складності виробничим системам.
[Редагувати, червень 2015] Якщо ви читаєте це, тому що ви шукаєте рішення для повільного часу компіляції під час розгортання, ви можете розглянути можливість попереднього компілювання активів на локальному рівні. Інформація про це міститься в посібнику з конвеєра активів . Це дозволяє виконувати попередню компіляцію на локальному рівні лише тоді, коли відбудеться зміна, зробити це, а потім швидко розгортатись без етапу попереднього компіляції.