Compressor

Door Pim Vernooij, 14 jaar geleden, 1.647x bekeken

Tegenwoordig wil je steeds meer en steeds mooiere dingen toevoegen aan je website. Ook wel bekend als Web 2.0. Allemaal leuk en aardig, maar vaak word vergeten dat lang niet iedereen op 4mbit of hoger zit. Je moet dus rekening houden met mensen op een trage verbinding.

Het script genereerd een cache file op basis van het originele bestand, en creëert een nieuw cache bestand als het bestand is gewijzigd. Dit geeft als voordeel dat je gewoon commentaar in je javascript en css files kan opnemen, zonder dat deze naar de gebruiker word gestuurd.

JS en CSS files zijn te combineren door bestandsnamen te scheiden door een dubbele punt:
_js/file1.js:file2.js:file3.js of _css/file1.css:file2.css:file3.css

Een punt-komma zou logischer zijn, alleen struikelt safari2 hier om de een of andere vage reden over... Vandaar de dubbele punt.

Ik heb ook een geoptimaliseerde htaccess bijgevoegd voor optimaliseren van de webserver instellingen.

Voor de javascript compressie heb ik gebruik gemaakt van de JSMin library. De CSS compresie is van Martijn! (zie http://www.phphulp.nl/php/scripts/1/1145/)

Download de demo hier: http://dev.ysimo.net/Tools/Compressor/Compressor.zip

Voorbeeld: http://dev.ysimo.net/Tools/Compressor/

Gesponsorde koppelingen

PHP script bestanden

  1. compressor

 

Er zijn 15 reacties op 'Compressor'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
- -
- -
14 jaar geleden
 
0 +1 -0 -1
Zal vast prima zijn, te lui om helemaal door te lezen :D

Edit: resultaat ziet er iig netjes uit :)
PHP Newbie
PHP Newbie
14 jaar geleden
 
0 +1 -0 -1
Ziet er netjes uit.. Misschien even een iets uitgebreidere demo toevoegen aangezien je het hebt over "steeds mooiere dingen toevoegen aan je website", maar dat zie ik niet echt terug in je demo.

Daarnaast vraag ik me af wat dit doet: for (;;) {. Heb zoiets nog nooit gezien.
Pim Vernooij
Pim Vernooij
14 jaar geleden
 
0 +1 -0 -1
Een uitgebreider voorbeeld zou alleen meer js en css files toevoegen zijn. Lijkt me niet echt een nuttige toevoeging. De htaccess is nuttig voor caching van plaatjes en andere assets, dat bedoel ik met 'steeds mooiere dingen'. Punt is dat als je dit gebruikt, je in je er in je code geen rekening mee hoeft te houden: het word automatisch toegepast als je server het ondersteund.

for(;;) zorgt ervoor dat je loop door blijft gaat totdat je een break geeft. Zelfde als while(true). JSMin is overigens een opensource library.
Frank -
Frank -
14 jaar geleden
 
0 +1 -0 -1
Dit werkt alleen met Apache 2, oudere versies kennen geen mod_deflate. Zie ook SitePoint.

In oudere versies kun je met mod_gzip module aan de slag.
Pim Vernooij
Pim Vernooij
14 jaar geleden
 
0 +1 -0 -1
Ik heb m'n performance optimalisatie idee stiekem bij Yahoo vandaan :) Erg handig! Vooral YSlow voor FireBug is een leuke tool om mee te tweaken.

Alleen het gebruik van ETags heb ik nog niet helemaal onder de knie. YSlow blijft maar zeggen dat ik ze moet configureren, terwijl ik toch netjes een 304 header terug stuur... Dus for the time being maar ff uit gezet via de htaccess.

Zie ook http://developer.yahoo.com/performance/rules.html - Steve Souders heeft ook een boek, voor de geïntresseerden.

Ik heb backwards compatibility toegevoegd voor apache1.3.x d.m.v. mod_gzip. Dit is echter niet getest omdat ik niet beschik over een server met apache1.3. Geldt overigens ook voor de php versie: ik heb het getest met 5.1 of nieuwer. Zou kunnen dat het script in 5.0 werkt, maar dat kan ik niet zeker zeggen.
Martijn B
Martijn B
14 jaar geleden
 
0 +1 -0 -1
In de klasse CSSMin zit mijn code:
http://www.phphulp.nl/php/scripts/1/1145/

Misschien dat het netjes is om de originele auteur hiervan te vermelden.

Voor de rest vind ik het stoer dit je mijn code gebruikt ;D
Pim Vernooij
Pim Vernooij
14 jaar geleden
 
0 +1 -0 -1
Ah ik wist dat ik iets vergeten was, ik had oorspronkelijk zelf wat regexen daarvoor gemaakt, maar die was kut. Ik zal je naam er ff bij zetten.
Martijn B
Martijn B
14 jaar geleden
 
0 +1 -0 -1
Misschien dat er nog verbetering in zit omdat ik hier ongeveer een halfuur mee bezig ben geweest.

Als je iets ziet dat verbeterd kan worden of verkeerd gaat, dat wil ik er wel even naar kijken.
Hipska BE
Hipska BE
14 jaar geleden
 
0 +1 -0 -1
ik zie uw code niet in die cssmin classe hoor ... Jij wel?
Edit:
sorry, ik werwarde met de JSmin classe
Pim Vernooij
Pim Vernooij
14 jaar geleden
 
0 +1 -0 -1
Ik heb de code niet letterlijk gebruikt, omdat Martijn ook het bestand uitleest in zijn functie. Dat gebeurd bij mijn klasse al op een ander moment. Alleen de regexen heb ik dus gebruikt.
Martijn B
Martijn B
14 jaar geleden
 
0 +1 -0 -1
@Hipska:

Tijd voor koffie ;P

@Pim Vernooij:

Wat jij doet mag ook gewoon volgens die GNU licentie, volgens mij.

Maar ik vind het wel netjes om even te vermelden wie de code origineel gemaakt heeft of waarop de code gebaseerd is.
Pim Vernooij
Pim Vernooij
14 jaar geleden
 
0 +1 -0 -1
Ik wil overigens nog de opensource library CSSTidy implementeren. Dit heb ik geprobeerd, alleen kreeg ik uit CSSTidy alleen geformateerde css terug, in de vorm van HTML. Copy/pasten naar een css bestand zou dan moeten...

CSSTidy parsed je css bestand naar een optimaal bestand wat validatie betreft, maar ook notatie: overbodige/dubbele properties etc worden verwijderd.

Zie ook http://csstidy.sourceforge.net/usage.php

/edit: zit ik ff snel door de source te kijken, is er gewoon een method plain();... Welke dus text/plain terug geeft... Straks maar eens naar kijken :)
Lode
Lode
14 jaar geleden
 
0 +1 -0 -1
ziet er in de eerste opslag netjes uit...
ga 'm bekijken... Das al heel wat toch ;)
Bas Kreleger
Bas Kreleger
14 jaar geleden
 
0 +1 -0 -1
Wat ik nog jammer vind is dat je niet verschillende paths kunt aangeven;

Ene JS bestand staat in: /js/google-maps/ en de andere in /js/modalbox/ bijvoorbeeld.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Pim Vernooij
Pim Vernooij
13 jaar geleden
 
0 +1 -0 -1
@Bas Kregeler: dat is inderdaad een goed punt. Ik onderhoud deze versie van de Compressor niet meer, maar heb hem getransformeerd naar een Zend plugin. Als die af is zal ik hem uploaden.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. compressor

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.