Vahemälu ja minimeerimine
Töötlusahela lõpus tuleb arvestada kolme tootmiskeskkonna vajadusega: vältida identse sisendi uuesti kompileerimist, vältida kompilaatori loomise kulu iga päringuga ning vähendada genereeritud CSS mahtu. Kõik kolm on kompilaatori ümber toimivad PHP-poolsed abifunktsioonid.
Vahemällu salvestamine
CSS loomisel käivitatakse iga kord kogu töötlusahel. Kui sisu päringute vahel ei muutu, kirjutab failipõhine vahemälu tulemuse kettale ja tagastab selle järgmistel kordadel sealt.
Edastage cache funktsioonile tw::generate() — true vaikekataloogi jaoks või kohandatud kataloogi asukohateena:
use TailwindPHP\tw;
// Cache to the default directory: sys_get_temp_dir() . '/tailwindphp'
$css = tw::generate([
'content' => '<div class="flex p-4">Hello</div>',
'cache' => true,
]);
// Cache to a custom directory
$css = tw::generate([
'content' => '<div class="flex p-4">Hello</div>',
'cache' => '/path/to/cache',
]);
// With a time-to-live (seconds)
$css = tw::generate([
'content' => '<div class="flex p-4">Hello</div>',
'cache' => true,
'cacheTtl' => 3600, // expire after 1 hour
]);
Vahemälukataloog luuakse automaatselt, kui seda veel pole.
Vahemälu võti
Võti tuletatakse sisust, CSS konfiguratsioonist ja lipust minify — see räsitakse failinimeks tailwind_<hash>.css. Iga muudatus märgistuses, sisendis CSS või minimeerimise lubatuses annab erineva võtme ja seega ka erineva faili.
Võtmes olev CSS konfiguratsioon koosneb tekstisisesest css-st ja failide sisust, mille nimed on määratud parameetris importPaths. Võti ei arvesta kahte sisendit: faile, mis kaasatakse nende failide sees oleva pesastatud @import kaudu, ega TailwindPHP versiooni. Tühjendage vahemälu pärast pesastatud impordi muutmist või paketi uuendamist, vastasel juhul serveeritakse endiselt vana väljundit.
Kehtivusaeg
cacheTtl on kehtivusaeg sekundites. Vahemälutabamuse korral võrreldakse faili muutmisaega praeguse ajaga; kui fail on vanem kui cacheTtl, käsitletakse seda vahemälupuudumisena ja kompileeritakse uuesti. Kui cacheTtl puudub, ei aegu kirjed kunagi — tühjendage need käsitsi.
Vahemälu tühjendamine
tw::clearCache() (või funktsioon clearCache()) eemaldab vahemälukataloogist failid tailwind_*.css ja tagastab kustutatud failide arvu.
use TailwindPHP\tw;
use function TailwindPHP\clearCache;
$deleted = tw::clearCache(); // default directory
$deleted = tw::clearCache('/path/to/cache'); // custom directory
clearCache('/path/to/cache'); // function form
Kompilaatori oleku vahemälu
Väljundivahemälust on abi ainult siis, kui sama sisu esitatakse uuesti. Kui sisu muutub iga väljakutsega, on kulukas osa kompilaatori enda loomine: @import "tailwindcss" lahendamine, komplektis olevate ressursside parsimine ja teema koondamine. See etapp sõltub ainult sisendist CSS, seega saab selle salvestada ja uuesti kasutada.
Edastage stateCacheFile funktsioonile tw::compile() (või new TailwindCompiler($css, $options)):
use TailwindPHP\tw;
$compiler = tw::compile($themeCss, [
'stateCacheFile' => __DIR__ . '/cache/tailwind-state.php',
]);
$css = $compiler->generateExact($html, true);
Esimesel loomisel kirjutatakse olek antud teele lihttekstina PHP faili, mida OPcache saab päringute vahel jagada; hilisemal loomisel laaditakse see uuesti parsimise asemel failist. Väljund on bait-baidilt identne vahemäluta kompilaatori omaga.
- Faili kontrollitakse mootorisõrmejälje järgi (TailwindPHP lähtekoodifailide ja ressursside suurused ning muutmisajad), sisendist CSS ning suvanditest
basejaimportSearchPathstuletatud võtme järgi ning iga sisendi imporditud faili suuruse ja muutmisaja järgi. Erinevuse korral koostatakse fail uuesti ja kirjutatakse üle; seega ei vaja TailwindPHP uuendamine ega imporditud faili muutmine käsitsi sekkumist. - Teie vastutate tee eest: kasutage iga erineva sisendi CSS jaoks eraldi faili kataloogis, kuhu veebiserver saab kirjutada. Kirjutamine on atomaarne (ajutine fail ja
rename()). - Kohandatud
importResolverkasutavad sisendid jätavad vahemälu vahele, sest lahendaja käitumist ei saa sõrmejäljega tuvastada. - Sama vahemälu saab kasutada ka madalama taseme massiivi
compile()API ümber, kasutades funktsiooniTailwindPHP\StateCache\compileCssCached($css, $cacheFile, $options).
tw::generate() ei võta vastu parameetrit stateCacheFile; see loob iga väljakutsega uue kompilaatori. Kui loomise kulu on oluline, kasutage kompilaatori eksemplari.
Minimeerimine
Minimeerimine vähendab väljundi mahtu tootmiskeskkonna jaoks. Lipp minify väljastab minimeeritud CSS juba serialiseerimise käigus, mistõttu on see kiireim ja täpseim viis; tw::minify() käivitab olemasoleva CSS stringi põhise minimeerija (src/_tailwindphp/CssMinifier.php):
use TailwindPHP\tw;
// Minify during generation (serializer path, preferred)
$css = tw::generate([
'content' => '<div class="flex p-4">Hello</div>',
'minify' => true,
]);
// Or minify an existing string (string-based post-pass)
$css = tw::generate('<div class="flex p-4">Hello</div>');
$minified = tw::minify($css);
Need kaks viisi annavad samaväärse struktuuri, kuid baidid pole identsed. Serialiseerija säilitab alamelementide :not() selektorid, mille stringitöötlus kokku liidab; seetõttu eelistage genereeritud väljundi jaoks lippu minify ja kasutage tw::minify() juhul, kui CSS saabub stringina.
Mida see teeb
Mõlemad viisid rakendavad samu suuruse vähendamise võtteid:
| Etapp | Mõju |
|---|---|
| Kommentaaride eemaldamine | Eemaldab /* … */ plokid |
| Tühikute kokkusurumine | Koondab järjestikused tühikud ja eemaldab tühikud ümber { } ; : , ning selektorite kombinaatorite |
| Värvikoodide lühendamine | #ffffff → #fff, #aabbcc → #abc |
| Nullühikute eemaldamine | 0px → 0 (säilitab väärtused 0s/0ms) |
| Fondikaalu lühendamine | font-weight:normal → 400, font-weight:bold → 700 |
| Tühjade reeglite eemaldamine | Eemaldab tühjade deklaratsiooniplokkidega selektorid |
Kavakohaselt ei ühendata korduvaid selektoreid ega lühivormis omadusi — mõlemad muudaksid silumise keerulisemaks ja võivad mõjutada kaskaadi.
CLI: --minify või --optimize
CLI pakub serialiseerija minimeerimisteed kahe lipu kaudu:
# Optimize and minify (smallest output)
tailwindphp -i ./src/app.css -o ./dist/styles.css --minify # or -m
# Meant to optimize without minifying
tailwindphp -i ./src/app.css -o ./dist/styles.css --optimize
Praeguses versioonis minimeerib ka --optimize, seega kirjutavad mõlemad käsud samad baidid (#9). Lightningcss-iga samaväärsed teisendused käivitatakse igal ehitamisel, nii et tavaline väljund (ilma liputa) on juba optimeeritud ja loetaval kujul.
Ülejäänud avaliku API kohta — tw::generate(), tw::compile(), kontrollimeetodid ja sisendvormingud — vaadake API viidet.