Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 7 reacties
Bron: Cisp's blog

Tweakers.net-developer Tino Zijdel heeft op zijn weblog een nieuwe versie van JSMin+ aangekondigd. Het programma is bij versienummering 1.2 aangekomen en is hier als zip-bestand te downloaden. JSMin+ is een 'JavaScript minifier' die via PHP een JavaScript-bestand als het ware kan verkleinen. Dit verkleinen heet ook wel minification en haalt alle onnodige tekens zoals spaties en commentaar uit een JS-file zonder dat de werking van het bestand wordt veranderd. In het geval van JSMin+ wordt deze lap JavaScript-code omgezet naar deze minified code. Meer informatie over JSMin+ is hier te lezen. Het changelog van JSMin+ 1.2 ziet er als volgt uit:

Version 1.2 of JSMin+ is available for download. This version fixes PHP crashes in some versions (notably 5.2.9) on JS files with large comments or strings and handles if-else statements in a safer way. Overall the output size has been improved.

Changelog:

  • Fixed crash in PHP 5.2.9 when matching large comments or strings (due to PCRE backtracking bug)
  • Don't add curly braces around statements for a CASE label
  • Always put statements for IF between curly braces when followed by an ELSE
  • Save some more bytes by omitting the space between RETURN and the return expression in certain cases
Known issues:
  • JScript conditional compilation support is not complete yet
Versienummer:1.2
Releasestatus:Final
Besturingssystemen:Scripttaal
Website:Cisp's blog
Download:http://files.tweakers.net/jsminplus/jsminplus.zip
Bestandsgrootte:12,00KB
Licentietype:GPL
Moderatie-faq Wijzig weergave

Reacties (7)

ik heb wel eens wat testen gedaan met een dev sitetje.. en ik kon in het minifyen van JS niet echt een preformance winst vinden (het is al even geleden maar volgens mij ding de preformance er zelfs van achteruit) tuurlijk is de download groote lager maar volgens mij gaat de parse tijd omhoog (ik weet het niet helemaal zeker meer hoor het is al even geleden) zal binnekort er weer eens naar kijken hoe dat zat *bookmarked*

[Reactie gewijzigd door GhostShinigami op 19 april 2009 00:10]

Als je Packer gebruikt met base-62 encoding gaat je parsetijd inderdaad omhoog, in alle andere gevallen heeft het wel degelijk een positief (maar relatief klein - zeker als je al gzip compressie toepast) effect op de clientside performance.

Zoals ik zelf al meerdere malen heb aangegeven valt er vaak meer winst te bereiken op andere punten en is javascript minificatie zeker geen silver bullet.
Ik gebruik zelf de YUI Compressor 2.4.2, alhoewel Dean Edwards' Packer 3.1 nog kleinere bestanden weet te maken (maar minder veilig).

Hoe presteert JSMin+ 1.2 ten opzichte van zijn concurrenten?
Met vergelijkbare settings (JSMin+ ondersteunt nog geen minificatie van variabelen) ontlopen de resultaten elkaar niet zo. JSMin+ weet er vaak nog net een paar extra bytes af te snoepen, maar dat is redelijk verwaarloosbaar.

Packer heeft echter als nadeel dat het bepaalde eisen stelt aan de syntax van je javascript; optionele puntkomma's weglaten is uit den boze. Ook functie declaraties moeten afgesloten worden met een puntkomma, iets wat bijna niemand normaliter doet. De base62 encoding is enkel handig als je om wat voor reden dan ook geen gzip compressie kan toepassen bij het serveren van je javascript files, aangezien die encoding zelf weer een nadelig effect heeft op de clientside performance (het unencoden van de javascript op elke pagina kost ook tijd). Verder kan het minificeren van variabelen in Packer inderdaad potentiele problemen opleveren; er zit niet een volledige JS parser achter waardoor probleemgevallen niet gedetecteerd en ontweken kunnen worden.

YUI Compressor zit erg goed in elkaar en gebruikt ook een volledige JS parser (Rhino - het java-broertje van SpiderMonkey*). Het is echter nogal een lijvige tool, en het is java-based. JSMin+ is ontstaan vanuit de behoefte om iets te hebben dat simpel en snel ingezet kan worden in onze eigen, PHP-based, omgeving.

Wat voor jou de beste keuze is hangt dus af van wat het beste te integreren is in jouw eigen workflow. Als je nu YUI Compressor al gebruikt is er weinig reden om over te stappen op JSMin+. Misschien wel wanneer wij ook variabele minificatie ondersteunen en ook op dat punt betere resultaten kunnen halen :P

* JSMin+ is gebaseerd op Narcissus wat weer het javascript broertje van SpiderMonkey is; deze was redelijk eenvoudig te porten naar PHP. Meer over het hoe en waarom van JSMin+ is te lezen op mijn weblog: http://crisp.tweakblogs.n...ript-minifier-jsmin+.html

[Reactie gewijzigd door crisp op 18 april 2009 20:30]

Ik neem aan dat JSmin+ gebruiken alleen zin heeft bij erg grote javascript bestanden, niet bij kleintjes?
Als je meerdere kleine javascripts include op een pagina loont het sowieso om te kijken of je die scripts niet kan combineren; het verlagen van het aantal HTTP requests geeft een nog veel grotere verbetering van de clientside performance dan minificatie - zeker als je al gzip compressie gebruikt.

Minificatie van bestanden moet je eigenlijk pas doen als je dat ook snel en eenvoudig kan integreren in je deployment proces en als je op andere punten eigenlijk geen winst meer kan behalen :P
Ach, alle kleine beetjes helpen om de laadsnelheid van je pagina te vergroten en het bandbreedte gebruik van je server te verkleinen.

ps. Bij grotere bestanden loont het tevens om gzip compressie op de server te activeren.

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True