Komprimer dit site og øg hastigheden
Apache har et lille lækkert modul der hedder mod_deflate, der gør det muligt at gzippe sine sider inden de sendes til brugeren. Det sparer båndbredte og øger hastigheden.
På et testsite fyldte forsiden til at begynde med 309 KB. Efter jeg tilføjede mod_deflate til min .htaccess fik jeg sitet ned på 143 KB. Hvilket betyder rigtig meget hvis ens site har et stort load. Det kan også have betydning ift. ens placering i søgemaskiner. Da loadtiden bl.a. kan indgå i søgemaskinens vurdering af, hvilken placering siden skal have.
For at bruge mod_deflate skal man indsætte følgende i sin .htaccess:
1 2 3 | <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/css </IfModule> |
Hvilket aktiverer mod_deflate for text/html og text/css. Man kan selvfølgelig tilføje alle de typer man vil. Det er nok meget nærliggende også at tilføje text/plain, text/xml og application/javascript.
(Bemærk at javascript ikke er text/javascript)
Hvis man er på jagt efter en udelukkende php-løsning kan man tilføje
1 | ob_start("ob_gzhandler"); |
I toppen af sine php-filer (eller i en include-fil der inkluderes på alle siderne), men mod_deflate har samme virkning og er nemmere at implementere. Det kræver dog, som med alt andet, at serveren understøtter det. Hvis man laver en
1 | phpinfo(); |
Vil man under “Loaded Modules” kunne se om modulet er tilgængeligt.
For flere hastighedstips se mit indlæg om mod_expires.
Excel m.m. i PHP
I forlængelse af mit forrige indlæg med Zip-filer i PHP kan jeg nævne at de nye Office-produkter faktisk gemmer zip-filer med xml-dokumenter. Prøv fx at omdøbe en .xlsx-fil til .zip og pak den ud.
Jeg vil ikke lige gennemgå hvordan det er bygget op, men jeg har en fil ved navn xl\worksheets\sheet1.xml liggende, og den indeholder bl.a.:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <sheetData> <row r="1" spans="1:2"> <c r="A1"> <v>100</v> </c> <c r="B1"> <v>400</v> </c> </row> <row r="2" spans="1:2"> <c r="A2"> <v>200</v> </c> <c r="B2"> <v>800</v> </c> </row> <row r="3" spans="1:2"> <c r="A3"> <f>SUM(A1:A2)</f> <v>300</v> </c> <c r="B3"> <f>SUM(B1:B2)</f> <v>1200</v> </c> </row> </sheetData> |
Det er en xml-repræsentation af følgende rækker:
1 2 3 | 100 400 200 800 300 1200 |
Hvor den sidste række er en sum af de to ovenstående.
Har man først gennemskuet strukturen er det forholdsvist nemt at lave et PHP-script der kan skrive og læse Excel2007-dokumenter.
Word2007-dokumenter er opbygget på ca. samme måde.
Zip-filer i PHP
At kunne håndtere zip-filer er meget anvendeligt. Hvis man fx vil gi’ ens brugerne mulighed for at downloade deres data. Eller hvis man gerne vil give de samme brugere mulighed for at uploade flere filer uden at skulle uploade dem enkeltvis (og uden at bruge et flash-plugin).
I PHP er det forbavsende let. Det eneste det kræver er at zip-modulet er indlæst.
Har i eksemplet opretter jeg en lipsum.zip og tilføjer filen lipsum.txt til den. Bemærk at jeg kalder filen for zlipsum.txt i zip-filen:
1 2 3 4 5 | $zip = new ZipArchive(); if ($zip->open("lipsum.zip", ZipArchive::OVERWRITE)) { $zip->addFile("lipsum.txt", "zlipsum.txt"); $zip->close(); } |
Her ta’r jeg den samme lipsum.zip og pakker zlipsum.txt ud i samme bibliotek:
6 7 8 9 10 | $zip = new ZipArchive(); if ($zip->open("lipsum.zip")) { $zip->extractTo("./", "zlipsum.txt"); $zip->close(); } |
For at checke om zip-funktionerne er tilgængelige kan man lave en:
1 2 3 | if (class_exists("ZipArchive")) { // ... } |

Jeg hedder Morten, og jeg har udviklet webapplikationer siden slutningen af 90'erne.