Komprimer dit site og øg hastigheden

January 13, 2010 · Posted in Udvikling · Comment 

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.

Spore hvilke links brugeren trykker på

January 1, 2010 · Posted in Udvikling · 3 Comments 

I nogen tilfælde vil jeg holde styr på hvilke links brugeren trykker på når vedkommende forlader min side. Normalt vil jeg løse dette ved at tilføje et proxy-script der sender videre. Fx:

  <a href="redir.php?url=http://mbn.dk">mbn.dk</a>

Det gi’r dog nogle grimme adresser, og problemer hvis brugeren fx vil kopiere adressen og bruge den andre steder.

En løsning som jeg synes er pænere er at bruge noget Javascript der kigger på de events browseren fyrer af når man trykker på et link. Eks:

<script type="text/javascript">
  $(document).ready(function() {
    $("a[target=_blank]").mousedown(function() {
      $.post("link_tracker.php", { url: $(this).attr("href") } );
    });
  });
</script>

Efterfølgende skal link_tracker.php samle $_POST['url'] op og behandle den …

Bemærk at jeg kun matcher de events hvor target-attributten er sat til “_blank”. Jeg kan måske ved fordel matche på alle links, og så checke om de starter med “http://”. Jeg matcher på mousedown og ikke click af den simple årsag at mousedown matcher mere. Fx midterklik. Dog matcher den ikke hvis man trykker på linket via tastatur, men koden kan nemt udvides til at tage højde for de senarier.

Ovenstående kræver jQuery som jeg loader via:

<script type="text/javascript"
        src="http://www.google.com/jsapi"></script>
 
<script type="text/javascript">
  google.load("jquery", "1.3");
  google.load("jqueryui", "1.7");
</script>


  • Om websmed.dk

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

    Jeg vil her dele ud af min erfaring, og med jævne mellemrum poste nogle tips og tricks, samt løsningsforslag på generelle dagligdags problemstillinger.

    Jeg har en forkærlighed for PHP og MySQL, hvorfor I nok vil se flest indlæg der vedrører den gren af webudvikling.

    Jeg har en anden blog af mere personlig karakter på mbn.dk, hvor I kan finde kontaktmuligheder m.m.

    Mine indlæg vil tit være baseret på problemstillinger i mit daglige virke, eller i mit eget firma MRLYTICS, hvor jeg sælger kundeundersøgelser samt kundedatabaser.

    Denne side er hostet hos slicehost.

  • Skrevet på Twitter