WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Minimera sina script... (https://www.wn.se/forum/showthread.php?t=35251)

grinditwp 2009-02-19 14:03

Satt och kollade över mina script bibliotek jag skrivit till ett projekt.
Dessa ligger på 155 kb.

Om jag raderar alla onödiga mellanslag, tar bort alla kommentarer, alla radbrytning osv. Alltså gör alla kod till en kodklump. Sparar jag ca 18% utrymme.

155 kb blir 127 kb.

Är detta lönt att göra?
Har sett att många script t.ex. Google utvecklar är ihop klumpade på detta viset.

På 1000 besökare bör jag spara ca 28 000 Kb då.
På 10 000 besökare bör jag spara ca 280 000 Kb då.
Alltså närmre 270 Mb. Då börjar det bli lite av det.

Gör man såhär? Är jag dum i huvudet och tänker helt fel? :lol:

gsoc 2009-02-19 14:09

Är det scriptet eller själva htmlen som skickas till klienten du menar?

grinditwp 2009-02-19 14:11

Citat:

Originally posted by gsoc@Feb 19 2009, 15:09
Är det scriptet eller själva htmlen som skickas till klienten du menar?

Framför allt skript som inkluderas och används av sidan. Både PHP och JS.
Alltså både klient och server script.

gsoc 2009-02-19 14:19

Scripten i sig är det ju dumt att försöka minimera, däremot själva datan som du skickar till klienten kan man ju komprimera för att spara lite, webbläsarna kan ju tolka det endå...

Så ja, du tjänar lite bandbredd om du komprimerar javascript och htmlen.

grinditwp 2009-02-19 14:26

Citat:

Originally posted by gsoc@Feb 19 2009, 15:19
Scripten i sig är det ju dumt att försöka minimera, däremot själva datan som du skickar till klienten kan man ju komprimera för att spara lite, webbläsarna kan ju tolka det endå...
Så ja, du tjänar lite bandbredd om du komprimerar javascript och htmlen.

Men om filen är större måste väll även servern arbeta mer?
Ett php-script på 100kb bör väll både ta bråkdelen mer tid och belasta servern lite mer än ett script på 50 kb? Eller?

gsoc 2009-02-19 14:28

Nej inte om funktionerna är desamma, visst du kanske sparar lite på själva arbetsminnet men det kan knappast vara märkbart...

eg0master 2009-02-19 20:00

Premature optimization is the root of all evil, dvs innan du har data som visar på ett problem ska du inte optimera. och PHP-filens storlek kommer under alla förhållanden vara dittminsta problem.

och vad gäller data som skickas till klienten så kan du ju ha komprimerade filer som sedan packas upp på klienten (om det är storleken påöverfört data du är orolig för). Och åter igen - gör det bara om du kan påvisa ett faktiskt problem.

tartareandesire 2009-02-19 20:30

Att optimera själva scriptfilerna gör dom ganska oläsbara (om man nu inte behåller okomprimerade kopior förstås). Du tjänar lite grann men knappast så det är värt besväret.

Erik Stenman 2009-02-19 21:01

Använd gzip istället. Här står det hur du gör: gzip.se

studiox 2009-02-19 21:15

Citat:

Originally posted by tartareandesire@Feb 19 2009, 21:30
Att optimera själva scriptfilerna gör dom ganska oläsbara (om man nu inte behåller okomprimerade kopior förstås). Du tjänar lite grann men knappast så det är värt besväret.

Jag tror inte din webbläsare bryr sig om dom är läsbara eller inte (OM vi pratar om client-scripts som JS) - Det är snarare tvärtom, desto mindre saker JS parsen måste gå igenom desto snabbare blir scriptet, både att ladda ner och execute!

gsoc 2009-02-19 21:17

Han menade nog dom lokala scripten, såsom php osv

tartareandesire 2009-02-19 22:21

Citat:

Originally posted by gsoc@Feb 19 2009, 22:17
Han menade nog dom lokala scripten, såsom php osv

Jo, precis.

studiox 2009-02-19 23:45

Citat:

Ursprungligen postat av tartareandesire
Citat:

Ursprungligen postat av gsoc
Han menade nog dom lokala scripten, såsom php osv

Jo, precis.

Anledningen till jag inte trodde det var att han skrev "google gör såhär" och dom enda scripten som google har tillgängliga är väl JS..

Pratar vi PHP så spelar det, precis som andra också sagt - ingen som helst roll.

kw_wasabi 2009-02-20 00:03

Citat:

Originally posted by grinditwp@Feb 19 2009, 15:03
Om jag raderar alla onödiga mellanslag, tar bort alla kommentarer, alla radbrytning osv. Alltså gör alla kod till en kodklump. Sparar jag ca 18% utrymme.

155 kb blir 127 kb.

Om det har stor betydelse för snabbheten vet jag inte. Men du bör ju också tänka på att koden lätt ska kunna felsökas och ändras av en människa. Det blir svårt om man har klumpat ihop allting och tagit bort alla "in-tabbningar" osv.

radioaktivitet 2009-02-20 07:11

Jag brukar använda yui compressor för att göra koden mindre. Sedan brukar jag gzippa. Vad jag vet är det det absolut bästa sättet att få ner storleken på koden. Lägg sedan den koden som en inkluderad .js fil.

emilv 2009-02-20 07:48

Klientside-kod tjänar du på att komprimera. Antingen gör du som radioaktivitet och kör det genom en minimizer eller så kör du enbart gzip (koden blir större med enbart gzip men lättare att jobba med). Sedan ska du se till att stänga av E-Tag för dessa filer samt sätta en Expiry-header en bit in i framtiden så att filen cachas i webbläsaren.

Ett problem med långtida Expiry-headers är om du vill göra förändringar i filen, då vill du ju också att besökarens webbläsare hämtar den senaste versionen. Detta har vi löst på Levonline genom att vi har en PHP-variabel som heter $cacheid. I denna variabel lagrar vi ett nummer som vi ökar när vi gjort förändringar i någon statisk fil (JS, CSS, bilder etc). Vi lägger på cache-id:t på sluten av filnamnet när vi länkar in filerna, till exempel så här:

<script language="JavaScript" type="text/javascript" src="/inc/jquery-1.2.6.min.js?<?php echo $cacheid;?>"></script>

Ökar vi $cacheid så kommer det alltså i webbläsarens ögon bli ett unikt filnamn och filen hämtas då inte från webbläsarens cache. Med denna metod har vi fått ner antalet HTTP-frågor för återkommande besökare till en enda utan att försvåra vårt eget arbetsflöde.

Clarence 2009-02-20 08:00

Citat:

Originally posted by grinditwp@Feb 19 2009, 14:03
Gör man såhär? Är jag dum i huvudet och tänker helt fel? :lol:
Det är bra att göra så, men sen kan man fråga sig om det blir värt besväret mot filer som frekvent uppdateras. Men har du ett gäng script-bibliotek som sällan uppdateras finns ingen anledning att inte minimera. Ett litet tips är att spara den som <namn>.min.js så du inte råkar göra dig av med icke-minifierade versionen tills den dagen det ska uppdateras.

Det finns ett gäng pack-tekniker också för att ytterligare minska storleken men de har två saker gemensamt; det tar längre tid att exekvera (oftast ingen större skillnad) och är något osäker att köra om man inte är 100% på att man har kompatibel kod.

Ett annat tips är att kombinera småscript som inkluderas till en fil för att slippa onödigt många requests (samma skäl som css sprites blivit populära).

gsoc 2009-02-20 08:35

PHP:
http://blog.digitalstruct.com/2008/02/27/p...ing-techniques/

ASP:
http://www.asp101.com/lessons/caching.asp

CSS:
http://www.cleancss.com/

Javascript:
http://dean.edwards.name/packer/

radioaktivitet 2009-02-20 08:41

Använd inte http://dean.edwards.name/packer/. YUI Compressor är mycket bättre.

Källa http://blog.jquery.com/2009/01/21/jquery-131-released/

Citat:

Finally, a few users noticed that we no longer provide a “packed” version of jQuery (a version of jQuery run through Dean Edwards’ Packer with Base62 encoding turned on). We did this for a couple reasons:

* Packed scripts are significantly harder to debug (even harder than minifed scripts).
* Packed scripts aren’t able to run on all platforms without issue (such as Adobe AIR and Caja-capable environments).
* But most importantly: Packed scripts are slower for the user than what you would get from using just minification. This may seem counter-intuitive since a packed script’s file size is smaller than a minified script but the final load time ends up being much higher (due to the decompression step it must go through). We have some data regarding the loading performance of minified scripts vs. packed scripts, for those that are interested.

The minifed copy of jQuery that we provide, run through the YUI Compressor, should be the optimal form of jQuery to use in a production environment (served using gzipping, if possible).


grinditwp 2009-02-21 21:29

Tanken var att minimera filer som ej skall arbetas med längre. Självklart behålla en icke komprimerad fil för framtida arbete och felsökning.

Som sagt gäller det typ scriptbibliotek som enbart skall användas, inte ändras i.

gsoc: Tack för de fina länkarna!
Clarence & emilv: Tack för de välfyllda svaren.
radioaktivitet: Även tack till dig såklart!

Och alla andra såklart :P Tack för alla inputs.

stakes 2009-02-21 22:09

Jag gjorde en liten implementation med PHP för ett tag sedan...

"A tool for compressing JavaScript and CSS without disrupting your workflow. Reducing file size and the number of HTTP requests."

http://webcloud.se/article/PHPCompressAssets_02

dAEk 2009-02-22 13:16

Kör du t.ex. Java finns det möjlighet att automatiskt komprimera JS-filer m.h.a. jsmin och ett Ant-skript som körs när man bygger projektet för deployment. Ganska trevligt sätt att slippa tänka på det när man fått det att rulla.


Alla tider är GMT +2. Klockan är nu 00:41.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson