Christian Weber Internentdienste

  • Home
  • Blog
  • Portfolio
  • About
  • Contact
  • Imprint
HomeGoodies / JavaScript / PHP / WebcodingJavaScript und CSS schneller laden mit htaccess gzip

JavaScript und CSS schneller laden mit htaccess gzip

Apr 10 2008
by Christian Weber
15 Comments

Wer kennt es nicht… man hat Protoype… Scriptaculous und noch einige andere Bibliotheken… sehr schnell hat man mal 200kb die ständig geladen werden. Das dies ein ganzer Haufen ist für so manch eine Leitung, ist jedem klar.

Kleines Beispiel:

Komplettes Prototype ohne Kompression: ca. 9 Sekunden (124kb)
Komplettes Prototype mit Kompression: ca. 3 Sekunden (32kb)

Das ist definitiv ein immenser Vorteil, die komprimierte Version wird nur genommen, sofern der Browser gzip-Dateien unterstützt, somit kann es auch hier nicht zu Problemen führen. Einzigster Nachteil: Browser ohne Support, haben nach wie vor lange Ladezeiten, was Schade ist.

Der .htaccess Code:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:Accept-Encoding} .*gzip.*
RewriteRule ^js/(.*)\.js$ /scripts/$1.js.gz [L]
RewriteRule ^css/(.*)\.css$ /css/$1.css.gz [L]
AddEncoding x-gzip text.gz

Wichtig ist das man stets 2 Versionen von allen Dateien machen. Einmal die normale .js / .css und dann einmal .js.gz / .css.gz. Via Script lässt sich das auch ganz einfach lösen. Wer sich keine große Arbeit machen will, diese zu komprimieren. Einfach diese PHP-Datei in den Ordner mit den JavaScripts legen. (Für CSS entsprechend anpassen).

<?php

$jsFiles = glob('*.js');
foreach($jsFiles as $jsFile){

$basename = basename($jsFile);
$gzname   = $basename.'.gz';
file_put_contents($gzname, gzencode( file_get_contents($basename),9));
}

?>

Hoffe das hilft dem einen oder anderen, ein wenig Bandbreite zu sparen und den Usern ein wenig mehr aus den Ladezeiten herauszuholen.

15 Responses to JavaScript und CSS schneller laden mit htaccess gzip

  1. 10. August 2008
    07:55

    Abro

    [code]
    $files = glob('{css/*.css,js/*.js}',GLOB_BRACE);
    foreach($files as $file)
    {
    $gz = $file.'.gz';
    file_put_contents($gz, gzencode(file_get_contents($file),9));
    }
    echo 'Files found: '.count($files);
    [/code]

    ;o) netter artikel, danke dir.

  2. 1. Dezember 2008
    13:25

    RYErnest

    Nice post u have here :D Added to my RSS reader

  3. 19. Februar 2009
    13:15

    Daniel

    Schöbner Artikel :)

  4. 19. Februar 2009
    13:25

    Christian Weber

    Danke Dir! :)

  5. 20. Februar 2009
    20:10

    7162

    Vielen Dank für den Hinweis, hat mir geholfen im Gegensatz zu manch anderer Quelle.

  6. Pingback: How To Automate Optimization and Deployment Of Static Content

  7. Pingback: How To Automate Optimization and Deployment Of Static Content « Tech7.Net

  8. Pingback: Wordpress Blog Services - How To Automate Optimization and Deployment Of Static Content

  9. Pingback: How To Automate Optimization and Deployment Of Static Content- My Site!

  10. 2. Oktober 2009
    22:30

    Kim

    Performance-Gewinn durch Kompression der ausgelieferten Komponenten und gleichzeitig wieder Verlust durch die sehr teure Funktion glob().

    Das Beispiel ist zwar wertvoll, aber es könnte schöner sein.

  11. Pingback: How To Automate Optimization and Deployment Of Static Content | Desinine

  12. 23. November 2009
    18:35

    gurgelstock

    Danke für das script, sehr hilfreich!

  13. 7. Januar 2010
    23:43

    Frank-Andre Thies

    Hi,

    Danke für den super Hinweis, ich habe aber Probleme bei der Umsetzung. Denn bei mir kommen nun folgende Fehler in der Konsole:

    Fehler: Stylesheet …/css/base.css wurde nicht geladen, weil sein MIME-Typ, “application/x-gzip”, nicht “text/css” ist.

    Fehler: illegal character
    Quelldatei: …/jquery.cycle.all.min.js
    Zeile: 1
    Quelltext:
    ‹

    Weiss jemand, was ich ggf. noch in der .htaccess eintragen muss, damit die GZ-Files akzeptiert werden?

    Danke im Voraus

  14. 28. Januar 2010
    11:33

    Alex

    Hallo

    Hab das auch so eben ausprobiert, aber klappt bei mir nicht.
    Das PHP skript zum umwandeln funktioniert einwandfrei, echt super.

    aber dann habe ich htaccess code in die datei gemacht und in das rootverzeichnis geladen aber es ändert sich nichts, bzw. wo kann man sehen, dass die .gz datei geladen wird? im quelltext??
    danke

  15. 17. März 2010
    12:10

    Sascha

    Hallo,

    Vielen Dank für diesen Artikel. Ich versuche schon seit geraumer Zeit meine js Dateien mit GZIP auszuliefern.
    Mit deinem Script konnte ich diese mal serversetig erstellen.
    Nun aber bei der Auslieferung happerts…
    Ich bekomme immernoch ein 600k grosses js file (ext-all.js).
    Das komprimierte File scheint laut Firebug konsole nicht ausgetauscht/ausgeliefert zu werden. Kannst Du mir vielleicht eine Tipp geben an was das es liegt?

    Ich habe Dir mal eine Testfile mit dem js platziert:
    http://nobile-bergdietikon.ch/test.php

    in der htaccess habe ich folgendes platziert:
    RewriteEngine On
    RewriteBase /htdocs/
    RewriteCond %{HTTP:Accept-Encoding} .*gzip.*
    RewriteRule ^js/(.*)\.js$ /js/$1.js.gz [L]
    AddEncoding x-gzip text.gz

    Jede Hilfe ist Herzlich Willkommen!

    Gruss
    Sascha

Cancel Reply

Leave a Reply





Last Articles

Fresh Air

Fresh Air

It was quite some time since my last post. The new
Basic Pixel Related Object Selection

Basic Pixel Related Object Selection

In my last tutorial I talked about how the isometr
Creating a basic Isometric Map

Creating a basic Isometric Map

Today I would like to show you how to make a very

Last Portfolio

Tour-mit-Schanz
Bosch-Climate
HydraGames
Hanauer-Kulturverein

Last Twitter Messages

  • Twitter feed loading

Popular Posts

  • Creating a basic Isometric Map 10 comment(s) | by Christian Weber
  • serialize() vs json_encode() 1 comment(s) | by Christian Weber
  • Basic Pixel Related Object Selection 9 comment(s) | by Christian Weber
  • JavaScript und CSS schneller laden mit htaccess gzip 15 comment(s) | by Christian Weber

Last Articles

Fresh Air

Fresh Air

It was quite some time since my last post. The new
Basic Pixel Related Object Selection

Basic Pixel Related Object Selection

In my last tutorial I talked about how the isometr
Creating a basic Isometric Map

Creating a basic Isometric Map

Today I would like to show you how to make a very

Last Comments

  • James Synge bei Creating a basic Isometric Map
  • Christian Weber bei Creating a basic Isometric Map
  • James Synge bei Creating a basic Isometric Map
  • Christian Weber bei Fresh Air
  • Daniel bei Fresh Air

Categories

Blog BrowserGames General Goodies HydraGames JavaScript Others PHP Projects Webcoding
Copyright 2011 CW-Internetdienste