Протягом років команда Filament провела величезну роботу за лаштунками, щоб зробити Filament найшвидшим та найпродуктивнішим рішенням для побудови додатків у TALL стеку. Останнім часом вони здійснили масштабне переопрацювання пакета tables, яке суттєво зменшило час рендерингу при переході з версії v3 до v4.
Протягом останніх кількох місяців команда знову взялася за оптимізацію, намагаючись видобути ще більше продуктивності з Filament. Цього разу вони внесли безліч коригувань в усю екосистему офіційних пакетів Filament і в захваті від попередніх результатів тестування продуктивності.
Бета-тестування для спільноти
Перед тим, як запустити настільки масштабний реліз для всіх Filament-додатків, команда хоче переконатися, що ці зміни пройшли випробування у реальних проєктах. Для цього вони випускають усі оновлення у вигляді нової бета-версії як для Filament v4, так і для v5, які ви можете встановити у свої додатки вже сьогодні.
Єдине прохання команди - тримати їх у курсі будь-яких проблем, з якими ви зіткнетеся локально, а також надавати зворотний зв'язок про те, наскільки покращилася продуктивність у вашому конкретному випадку використання.
Інструкції з встановлення
Розпочати роботу з бета-версією v4 або v5 можна всього за кілька простих кроків:
- Оновіть обмеження у вашому
composer.json для будь-якого open source пакета filament/* на ^4.12@beta або ^5.7@beta залежно від того, яку мажорну версію Filament ви зараз використовуєте
- Виконайте
composer update, щоб завантажити останню бета-версію
- Готово!
Без жодних суттєвих змін у коді ви маєте отримати більш продуктивну версію Filament.
Важливо: Не варто використовувати ці бета-версії у продакшні. За своєю природою вони можуть бути нестабільними, тому будьте обережні щодо того, де ви їх застосовуєте. Проте вони цілком підходять для локальної розробки або staging-середовища.
Будь ласка, залиште відповідь у цій дискусії на GitHub, щоб команда могла оцінити, скільки людей протестували бету - незалежно від того, виникли у вас проблеми чи ні. Їм важливо знати, що все працює добре без проблем так само, як і дізнатися про будь-які баги.
Що саме змінилося?
Якщо вам цікаво, які саме зміни дали Filament такий приріст продуктивності, ось кілька найпомітніших коригувань, внесених в екосистему:
Forms & schemas
- Значно швидший рендеринг великих форм завдяки рефакторингу Blade-шаблонів у прості функції генерації HTML
- Repeaters, builders та repeatable entries тепер агресивніше мемоізують свої внутрішні дочірні схеми
- Конфігурація компонентів, кольори, описи, іконки та підказки тепер мемоізуються
- Selects розв'язують свої опції менше разів під час рендерингу в деяких ситуаціях
Tables
- Швидший загальний рендеринг таблиць, включно з оптимізованими швидкими шляхами для базових текстових колонок та дій, а також різними іншими внутрішніми мемоізаціями
- Форматування стану виконується менше разів на комірку в деяких випадках
- Оптимізоване перевпорядкування таблиць для BelongsToMany відносин
- Внутрішні частини query builder тепер мемоізуються замість того, щоб перебудовуватися повторно
Panels & resources
- Мемоізовані пошуки від моделі до ресурсу, слаги ресурсів, назви сторінок ресурсів та видимість relation managers
- Швидше сортування груп навігації
Widgets & charts
- Віджети stat chart більше не імпортують всю бібліотеку Chart.js, зменшуючи розмір бандла
- Stat charts більше не перемальовуються, коли базові дані не змінилися
Інші покращення
- Більш ефективний ComponentAttributeBag, що замінює Laravel-версію
- Виправлена витоку пам'яті, спричинена тим, що слухачі подій модальних вікон дій не очищувалися
- Менше надлишкових звернень до конфігурації та створень екземплярів компонентів кнопок між запитами
- Більш ефективне кешування дисків файлової системи та перевірки існування файлів
- Компоненти Alpine для сповіщень тепер серіалізують менше даних
Велика подяка спільноті
Команда Filament каже це практично в кожному своєму блог-пості, але вони щиро не можуть повторювати це достатньо: Filament не був би тією неймовірною екосистемою, якою є сьогодні, без усіх вас у спільноті.
Від щирого серця дякуємо за те, що допомогли дійти сюди, і ще більше дякуємо за готовність допомогти протестувати ці нові версії Filament на благо всієї спільноти.
Давайте разом зробимо Filament ще швидшим!
P.S. Будь ласка, пам'ятайте зв'язатися з командою в цій дискусії на GitHub, якщо ви тестуєте бета-версії, навіть якщо вони працюють чудово!