Optymalizacja objętości plików css
Instalacja pluginu ‘gulp-purgecss’.
konsola
yarn add -D gulp-purgecss |
Aby zainstalowany plugin działał poprawnie, należy dodać jego wywołanie w funkcji “bundleCssProduction”. Do konfiguracji pluginu potrzebna jest ścieżka do aktualnie “budowanego” szablonu, więc należy przekazać ją jako argument w miejscu gdzie jest wywoływana.
frontend/gulp/tasks/bundle-css.js:52
return await bundleCssProduction(templatePath, sourcePath, targetPath, onError); |
frontend/gulp/utils/bundle-css-production.js.js:8
const purgeCss = require('gulp-purgecss'); |
Dodanie wywołania pluginu do łańcucha wywołań gulpa. Opcja “content” służy do zdefiniowania ścieżki plików, które będą sprawdzane przez plugin w celu odfiltrowania nieużywanych klas css, co przekłada się na ostateczną wielkość wynikowego pliku.
frontend/gulp/utils/bundle-css-production.js.js:30:48
const bundleCssProduction = ( |
Test poprawności instalacji.
konsola
yarn bundle-css 17:59:10] Using gulpfile /opt/lampp/htdocs/gulpfile.js [17:59:10] Starting 'bundleCssProduction'... [17:59:10] Bundling sixtyfive's css... [17:59:11] Finished 'bundleCssProduction' after 898 ms Done in 3.20s. |
Skopiowałem podstawowy szablon i odpaliłem builda z pluginem. Pierwszy screen przedstawia plik bez a drugi z pluginem.
Usunięcie nieużywanych skryptów i styli
frontend/templates/sixtyfive/javascripts/main.js:1:7
// import { initTooltiper } from './tooltiper' |
frontend/templates/sixtyfive/javascripts/main.js:23:29
// initTooltiper() |
Możliwe problemy ze sliderem
Jeśli występują problemy ze sliderem, należy dodać widoczne poniżej komentarze na początku i końcu pliku “_slider-lite.scss”.
frontend/templates/sixtyfive/scss/modules/_slider-lite.scss
/*! purgecss start ignore */ |
Ładowanie wszystkich zewnętrznych skryptów js i arkuszy styli (Jeśli to możliwe) z cdn
Zastępujemy aktualne przypięte skrypty i style ładowane z naszego serwera na takie, które będą ładowane z cdn’a
frontend/templates/sixtyfive/views/main.tmpl:44:53
<link |
frontend/templates/sixtyfive/views/main.tmpl:63:88
<script src="" defer > </script> src="build/main.bundle.js')]}" defer > </script> |
Dodatkowo dodajemy “preconnecty”.
https://web.dev/uses-rel-preconnect/
/templates/sixtyfive/views/main.tmpl:26:27
<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin> |
Optymalizacja metryki CSP (Cumulative Layout Shift)
Dodajemy do każdego tagu “img” atrybut “width”, “height”. Kolejnym krokiem jest ustawienie tzw leniwego ładowania zdjęć, można to zrobić za pomocą biblioteki Lazysizes (https://afarkas.github.io/lazysizes/index.html). Przykładowe użycie poniżej.
frontend/templates/sixtyfive/modules/randomPhotos/photo.tmpl
<div class="col-md-6 col-lg-4"> |
Optymalizacja objętości plików css (Zastosowanie zasady DRY)
Jeśli w projekcie korzystamy z biblioteki css to nie piszmy własnych styli, które najczęściej można zastąpić klasami z danej biblioteki. Mały ułamek tego, co można zrobić poniżej.
Plik html przed optymalizacją
<div class="col-md-6 col-lg-4"> |
Plik css przed optymalizacją
.randomPhoto { |
Plik html po optymalizacji
<div class="col-md-6 col-lg-4"> |
Plik css po optymalizacji
// Można usunąć |