Hey Martin Thorborg
Jeg vil lige starte ud med at sige at jeg er ikke ASP, .NET
eller Microsoft mand, men derimod PHP, MySQL og Apache. Men langt de fleste af
de ting jeg kommer med her vil gælde alle hjemmesider hvad enten de køre det
ene eller det andet.
Men her kommer mine fif til hvad i kan gøre, ud fra at have
kigget på Amino.dk og hvordan den er lige nu.
- Sammenlæg
javascript filer og css filer til 1 af hver type fil, altså så der kun er
en CSS og en JS fil som brugeren skal hente. Lige nu hentes der 14 js
filer og 7 css filer.
- Sammenlæg
billedfiler til et minimums antal. Altså få så mange af jeres små billeder
sammenlagt i så få filer som muligt, også kaldet CSS sprites. Det er muligt via CSS at bruge det
rigtige billede selvom de enkelte dele er i samme fil. Lige nu skal en bruger hente over 40
billeder fra jeres hjemmeside bare for at lave det design i har lavet, fx
toppen, knapperne, menuen, toppe osv. Det er bedre at en bruger skal hente
en billedfil på 200kb frem for over 40 billeder som
hver fylder 1-2kb stykket.
At sammenlægge filer gør at brugeren skal hente færre filer
fra serveren, hvilket både betyder mindre belastning af serveren, færre
requests og dermed langt hurtigere hjemmeside. Man skal huske at design/billeder,
css og js og alt det som bygger amino jo ikke kun er det eneste en bruger skal
hente når de besøger hjemmesiden. Der er også alle brugerbillederne (avatarene),
bannerreklamer på amino, bannerreklamer i folks signatur, facebook, analytics, twitter
osv. Det bliver til rigtig mange filer.
Ja rigtig nok fylder en enkelt side ikke så meget, men skal
man kontakte serveren rigtig mange gange som det jo er tilfældet på amino, ja
så vil responstid, brugerens internet stabilitet og rigtig mange andre ting
hurtigt kunne have indflydelse på hvor hurtigt amino vises.
- Komprimer
billedfiler, før de oploades til serveren. De billedfiler i laver skal
komprimeres ordentligt før i oploader dem til serveren. Dette gør at i
ikke behøver at komprimere en billedfil før de sendes til brugeren, da den
jo allerede er komprimeret så meget som muligt, i spare derfor belastning
af serveren.
- Komprimer
og fjern unødig kode fra js og css filer. Dette vil også her spare
brugeren for at skulle hente rigtig mange kb, bare sådan en ting som at
fjerne whitespace, altså mellemrum hvor de ikke behøves kan spare rigtig
meget. Tager man denne fil: http://www.amino.dk/themes/hawaii/style/Common.css
som fylder 42,17 kb. Men fjerner man unødig kode fra den fil, vil den
fylde næsten 10kb mindre, derefter kan man komprimere den så den kun
fylder ca 8kb (igen skal den komprimeres før den lægges op på serveren)
for at spare serveren for kræfter med at komprimere den inden den sendes
til brugeren.
- Komprimer
html koden og fjern unødig kode fra filen. Kigger man på denne side: http://www.amino.dk/forums/t/119405.aspx
fulder dens html kode i dag ca 185kb, det er muligt at fjerne unødig kode
samt komprimere den dynamisk, og gør man det vil man kunne spare ca 55kb
bare ved at fjerne unødig kode, og yderligere en helt del mere hvis man
komprimere den. I komprimere det allerede i dag. Og det her kræver også
langt mere arbejde at gøre noget ved, da der er så mange ting man skal
tage hensyn til
- Til begge ovenstående punkter: det skal også være mulighed for at hente en ukomprimeret udgave, da ikke alle browsere understøtter gzip komprimering.
- Send
de rigtige headere sammen med billeder, js filer og css filer, herunder fx
en expires header.
Lige nu er det sådan at der ikke bliver sendt en expires header, hvilket
gør eller kan gøre at min browser vil hente de samme elementer hver gang
jeg skifter side. Det vil altså sige at jeg vil komme til at hente
billeder, css og js filer, også selvom de ikke er ændret. Altså behøver
min browser ikke at tage kontakt til serveren igen for at hente filer som
jeg allerede har hentet, og dermed spares serveren og båndbredden for en
helt del. Og sådan vil det jo være for alle aminobrugere.
- Brug
statiske filer hvor i kan gøre det. Fx avatar billeder bliver lavet
dynamisk ser det ud som om, hvorfor ved jeg ikke, men de kunne lige så
godt være statiske, dette vil spare serveren for rigtig meget, da i lige
nu laver billederne via serverssidescript. Jeg er ikke Microsoft mand, men
ved at med en apache/PHP server kan man få serveren til at køre langt
flere filer (ca 100 gange flere) i sekundet bare ved at ændre en php fil
til html. Det kommer selvfølgelig an på hvilken udgave af PHP man køre. Men
det kunne være det samme på en microsoft server.
Det var lige det jeg fandt som i helt sikkert godt kunne
gøre for at optimerer hastigheden på hjemmesiden. Håber det kan bruges ;) Gør i
det vil i helt sikkert mærke en stor forskel, og samtidig vil i spare en helt del både server og båndbredde.
MVH Kim
|