ugrás a tartalomhoz

Stíluslap darabolása több CSS fájlra

Török Gábor · 2008. Jún. 3. (K), 16.03
Másik témához írt felvetés folytatódik itt, hogy ott ne térjünk el a tárgytól.

Függetlenül attól, hogy jó ötlet-e darabolni a CSS-eket vagy sem, a szóban forgó cikk noha javasolja azt, de igazán egyetlen előnyét sem említeni. (A "rendezettség" igen vézna kis lábakon álló érv.) Ha ezzel szembeállítod az egy CSS fájl egyszeri lekéréssel kiszolgálhatóságát, akkor nincs miről beszélni – gex hozzászólásában szerintem erre utalt.
 
1

látogatottság

Hodicska Gergely · 2008. Jún. 3. (K), 17.44
Harder hozzászólására: szerintem pont ebben a kérdésben nincs jelentősége a látogatottságnak, legalábbis nem úgy, ahogy Harder utal rá. Egy kis látogatottságú oldal esetében is minden egyes CSS-t külön szálon kell leszedni, lassabb lesz az oldal betöltődése, rontja a felhasználói élményt.

Ezzel együtt a probléma teljesen különválasztható: egy dolog, hogy hogyan érdemes a munka szempontjából tárolni a fájlokat, és másik dolog, hogy milyen formában történik a deploy. Egy pár soros scripttel élesítéskor egybe másolhatjuk az összetartozó CSS fájlokat, még tömöríthetjük is őket, és mindenki örül.


Üdv,
Felhő
2

kis látogatottság

Harder · 2008. Jún. 3. (K), 21.56
A másik topicban utaltam egy megoldásra, erre gondoltam:
Faster Page Loads - Bundle Your CSS and Javascript

Gábor, nem értek egyet azzal, hogy a rendezettség annyira gyenge lábakon állna az egyszeri lekéréssel szemben. Szvsz van, hogy fontosabb az első. Csak 1 szitu ami most hirtelenjében eszembe jutott:

honlapokat készít valaki, sok ügyfele van, de egyik munkája sem az a nagyobb honlap (akár terjedelemben, akár forgalomra stb.).. van, hogy vissza-vissza kell nyúlni későbbi fejlesztések miatt a saját kódjában. Abban gondolom egyetértünk, hogy felettébb hasznos, ha valami következetes a fejlesztés során és minden lapja esetében hasonló módon rendszerezi a kódokat.

Itt jön képbe a több css. Nem mondom hogy ez a legjobb megoldás, de egy lehetséges út a kódok rendbetartásához. Biztos vagyok benne hogy van olyan fejlesztő, aki így sokkal könnyebben vagy gyorsabban tudja végezni a munkáját.

Jómagam az 1 css híve vagyok és a kódot inkább kommentekkel tagolom kisebb/nagyobb egységekre, de nem merném azt mondani hogy a másik módszer rossz (te sem mondtad).

Most a fenti példára visszatérve: ennek a fejlesztőnek szerintem tökmindegy, hogy kispista bt bemutatkozó lapján ahol van napi 50 látogató, 1 vagy 5 css-t ránt be a lap letöltésekor. Sőt meg merem kockáztatni, hogy még a szerver rendszergazdájának is mindegy (azért ne kövezzenek meg a rendszergazdák, ha mégsem :D).
Neki sokkal fontosabb lesz, hogy a munkáihoz később visszatérve azonnal tudja hova kell nyúlni, mit hol talál. Ebben segíthet neki az, hogy pl. egy table.css-ben tartja az összes olyan formázást, ami a táblázatokra vonatkozik.

Felhő:
"szerintem pont ebben a kérdésben nincs jelentősége a látogatottságnak,"

én a látogattság - több css - szerver terhelés vonalat azért mondtam, mert remélem még emlékszel hogy az előző munkahelyünkön pont együtt ötleteltünk azon, hogy lehetne optimalizálni a lapot/csökkenteni a szerver terhelését/gyorsítani a megjelenést. Ott a lap(ok) napi több milliós egyedi látogatót generáltak. Én ekkor találkoztam ezzel a több css "problémával" először, erre utaltam az előző hozzászólásomban (hogy ezek összefüggnek).

más: Gábor a címhez kapcsolódóan ajánlott egy linket a lapról, de ez talán még inkább illik a témához:
CSS fájlok és tartalmak rendszerezése, avagy hogyan írjunk szép kódot

Lehet vele vitatkozni természetesen, örülök minden építő jellegű beszélgetésnek és szívesen tanulok másoktól.
3

nem a szerver terhelése a fontos

Hodicska Gergely · 2008. Jún. 3. (K), 23.42
én a látogattság - több css - szerver terhelés vonalat azért mondtam, mert remélem még emlékszel hogy az előző munkahelyünkön pont együtt ötleteltünk azon, hogy lehetne optimalizálni a lapot/csökkenteni a szerver terhelését/gyorsítani a megjelenést. Ott a lap(ok) napi több milliós egyedi látogatót generáltak. Én ekkor találkoztam ezzel a több css "problémával" először, erre utaltam az előző hozzászólásomban (hogy ezek összefüggnek).
Értem én, de nem a szerver terhelése a lényeg itt, hanem, hogy a böngésző minél kevesebb cuccost szedjen le. A statikus tartalmak anyira nem probléma, pl. az említett helyen is csak HA miatt volt több statikus szerver, de egy is simán elvitte volna a teljes terhelést nagyon alacsony loaddal. A letöltendő fájlok száma befolyásolja leginkább, hogy mennyi idő alatt jelenik meg a usernek a weboldal, absozlút nem mmindegy, hogy 1-2 fájl vagy 5-10 fájl.


Üdv,
Felhő
4

példák

Harder · 2008. Jún. 4. (Sze), 01.18
Jogos, akkor én emlékeztem rosszul, a szerver oldali részben Te vagy otthon nem én :) Viszont nézzünk példát:

a weblabor.hu-n a firebug szerint beránt a böngészőm 7db css-t, 375ms alatt (52kb)
az index.hu-n 2db css-t húz be, 203ms alatt (69kb)
origo.hu-n 2db css, 422ms alatt (61kb)
firefox.hu-n 4db css, 797ms (26kb)
említett lapon 4db css, 937ms (92kb)
egy pici honlapot megnézve ahol alig van látogatottság, 1db css-t 62ms alatt (2kb)

Kövezz meg de szerintem ezek a ms-beli eltérés még a 2 véglet között sem óriásiak, látogatói szemmel nézve. Ha a lapokat meg kb nagyságrendileg teszem egymás mellé, akkor a különbség még inkább eltörpül, ms-okról beszélgetünk.
Ezek a letöltési különbségek elvesznek az átlag látogató számára, aki a lap letöltése közben nézi ahogy megjelennek a képek és egyéb tartalmak.

Nagyon fontos dolognak tartom én is, hogy egy lap jól optimalizált legyen, jelenjen meg minél gyorsabban, de abban a lépéssorozatban amely során az "optimalizáltságot" eléred, ezt az 1 vs több css kérdést huszadrangú dolognak tartom a többi teendővel szemben (gondolok itt akár a szerverre, sávszélességre, képek számára és méretére stb..).
Plusz erre te még el is oszlattad azt a tévhitemet, miszerint ez fontos a szerverek terhelését tekintve.

Épp ezért nem tudok neki akkora jelentőséget tulajdonítani, mint amit kihallani véltem a "(A "rendezettség" igen vézna kis lábakon álló érv.) Ha ezzel szembeállítod az egy CSS fájl egyszeri lekéréssel kiszolgálhatóságát, akkor nincs miről beszélni")" felvezetőből és továbbra is tartom, hogy a rendezettség lehet érv a darabolás mellett.

Gondolom csak nekem fontos a rendezettség, az átláthatóság egy fejlesztés során, hisz 1 vagy több ember munkáját nagyban befolyásolja.

Kérdés: a fentebb említett cikkben vázolt megoldást jónak tartod?
5

rossz példa

Hodicska Gergely · 2008. Jún. 4. (Sze), 03.25
Pl. most nálunk nincs teljesen rendben a frontend, mert nem jutott az egységesítésre idő, és tök jól látszik gyakran, hogy behívod az oldalt, a title azonnal megjelenik, de az oldal csak kicsivel később kezd el renderelődni. Itt már szerver oldalon szinte nincs is semmi lehetőség (lehet több statikus domaint tartani), frontend oldalon kell megoldani a problémát.

Kövezz meg de szerintem ezek a ms-beli eltérés még a 2 véglet között sem óriásiak, látogatói szemmel nézve. Ha a lapokat meg kb nagyságrendileg teszem egymás mellé, akkor a különbség még inkább eltörpül, ms-okról beszélgetünk.
Azért még ott a JS is, és a végén lehet 1 sec fölött is már az emiatt latency, ami már érezhető a user élményben.

de abban a lépéssorozatban amely során az "optimalizáltságot" eléred, ezt az 1 vs több css kérdést huszadrangú dolognak tartom a többi teendővel szemben
Persze a képeket is optimalizálni kell, de mellette érdmes mindenhol csökkenteni a letöltendő objektumok számát.

Rendezettség: CSS nagyon nem az én asztalom, ezért nem tudom eldönteni mi a jobb, de mint írtam szerintem a két dolog független egymástól, lehet deploy folyamat része a CSS-es és JS-ek összepakolása.

A fentebb említett cikkben vázolt megoldást jónak tartod?
Végülis, bár lehet annyi hátránya, hogy mindenféle permutációkat adnak meg az emberek, így túl sok féle csomag jön létre. Ilyen szempontból esetleg szerencsésebb lehet, ha egy központi konfig szabályozza, hogy mik kerülnek egybe.

Bár pl. facebooknál is valami ilyesmi megoldás van, meg én is hasonló fele kacsintgatok. Amivel én megspékelném, hogy hozza be egy random paraméterként a fájlok közül annak a revízió számát, amelyik legutoljára volt commitolva, így tuti nem lehet gond a cachelésből.


Üdv,
Felhő
6

Az egy CSS előnye, hogy nincs hátránya

Török Gábor · 2008. Jún. 4. (Sze), 08.02
A rendezett css cikkben két dolog nem tetszett. Nem mindegy, hogy mit szoksz meg, milyen fejlesztési, szervezési, rendszerezési módszertanokat sajátítasz el, nyilván, ha úgy gondolod egyről, hogy bevállt, nem fogsz hetente újabb után kutakodni. A cikkben említett megoldás addig jó, amig ezt a felállást csak a fejlesztői környezetben használod a fejlesztést segítendő, és a Felhő által is említett módon élesítéskor ezekből lehetőleg egy fájlt csinálsz a már kifejtett szempontok miatt. Ez nem került említésre a cikkben, így olyan, mint ha ezt éles használatra is javasolna, szerintem helytelenül.

Továbbá még akkor is igazat tudnék adni a cikkírónak, ha ezt a CSS szervezési megoldást egyfajta újrafelhasználhatóság szellemében tálalja; például az általad felhozott példánál maradva kigyűjti a sok kis megrendelései során alapként használt stílusdefiniciókat, és elkülöníti a cégspecifikusakat (képbe jöhet a jobb verziókövetés). Azzal, hogy a táblázatok vagy fejléc stílusának leírását külön tárolod, ugyanazt éred el, mint ha ezeket egy fájlban tárolnád, csak meghagyod annak a veszélyét, hogy esetleg rossz gyakorlatok rögzülnek benned. (Igazából nem hiszem, hogy meggyőzhető vagyok atekintetben, mennyivel könnyebb, gyorsabb megnyitni a table.css-t, mint rákeresni pl. a /* table.css */ kommentre.)
7

érvek/ellenérvek

Harder · 2008. Jún. 4. (Sze), 11.10
Gábor: Meggyőzni semmi esetre sem akarlak, hisz jómagam is azt vallom amit Te, 1 (vagy minél kevesebb) CSS-t használjunk és kommentekkel tagoljuk a részeket.

Egyszerűen arról van szó, hogy a darabolás ellen/mellett szóló érvek esetében kicsit máshova helyeztük a hangsúlyt.
8

Ha egy picit én is...

Ustak · 2008. Jún. 4. (Sze), 20.15
...beleszólhatok, esetleg jó megoldás a layout css-ét és a text-font-color stb -re vontakozó css-t különválasztani, így ha az utóbbiból egy cross browser dolgot sikerül eszkábálni, akkor elég csak pár pici
dolgon változtatni új oldalak kreálásakor. Charles Wyke Smith által fémjelzett stylelib könyvtár is ezt hívatott követni, akit érdekel a téma (és nem zavarja az angol) szerintem érdemes belekukkantani.
Stylin'withcss
9

ezzel én is egyetértek

griphons · 2008. Jún. 6. (P), 12.17
Későbbi módosítás céljából nem rossz, ha külön vannak az ilyen css-ek, mert egy atom nagy css-ből kicsit nehezebb előbogarászni a módosítandó részeket. Tudom ez már szoftver kérdése, de nekem például fontos, hogy átláthatóak legyenek a css-eim, és ha kisebbek, az már növeli az átláthatóságot.
13

Deployment

zila · 2008. Jún. 13. (P), 09.28
Egyrészt ha van jó css szerkesztőd (pl. CSSEdit, OS X-re) az megoldja, hogy fókuszálni tudj a css egy adott részére (kommentekkel képezhetsz csoportokoat a css file-ban). Másrészt simán lehet írni egy olyan build scriptet (pl. apache ant) ami összefűzi a css-eket, kiszedi belőlük a kommenteket, módosítja a hivatkozásokat a forrásban/templatekben a telepítés előtt. Ezzel még szimulálni lehet a symfony környezet megoldását is (különböző build target-ek a fejlesztői, staging, test szerverekhez).
14

output buffer filter trükk

Hodicska Gergely · 2008. Jún. 13. (P), 22.37
Ezzel még szimulálni lehet a symfony környezet megoldását is
Egy alternatív megoldásként a következőt szoktam használni: az SVN-ben olyan hivatkozások vannak, amik az éles rendszerben működnek. Az egyéb környezetekben pedig a CSS és a JS is be van regisztrálva PHP-ként, és van egy auto_prepend PHP, ami regisztrál rájuk egy output buffer filtert, ami ezeket a hivatkozásokat lecseréli az aktuálisan használt domainnek megfelelően, és így pl. lehet minden fejlesztőnek saját subdomainje is (pl. felho.trunk.www.ustream.tv.lh).


Üdv,
Felhő
10

Fejlesztés vs alkalmazás

persicsb · 2008. Jún. 12. (Cs), 17.41
Szerintem fejlesztéskor igenis alkalmas lehet, hogy külön, logika szerint vannak szétdarabolva a CSS, JS, egyéb állományok. Ha pedig arra kerül a sor, hogy éles helyzetben alkalmazzuk a kódot, akkor a külön-külön fejlesztett CSS, stb fileokat egy build scripttel egyesítjük és kész. Így megtartható, hogy fejlesztés szempontjából és a felhasználói élmény szempontjából is hasonló legyen az eredmény.
Ahhoz hasonlítható ez, mint amikor egy forráskódból futtatható állományt készítesz.
11

Nem volt kerek egész a cikk

Török Gábor · 2008. Jún. 12. (Cs), 18.09
Az álláspontodat osztom, én kizárólag a cikkben foglaltakra reagáltam, nem pedig általánosságban a több fájlban tárolt CSS (pláne JS) kód használata ellen. A cikkből azt hiányoltam, hogy az nem került említésre, hogy éles környezetre az elgondolás nem biztos, hogy nyerő választás, továbbá az előnyként bemutatott módszer semmivel sem több vagy másabb az egy fájlban tárolt megoldáshoz képest, hiányoztak az érvek, amik meggyőztek volna.
12

templatek

hamlet79 · 2008. Jún. 12. (Cs), 19.33
Arról mi a véleményetek, ha egy cms-ben az egyes templatekhez használok külön css fájlokat?

default.css, news.css stb
sőt, tovább mentem:
default.js, news.js

Igy az egyes template-k funkcionalitását tudom szabályozni egyszerűen, átláthatóan. Nem igazán hiszem, hogy 2 új kérés olyan sokat számítana, hiszem egy átlagos oldalon úgyis van mondjuk 50.