Drupal Javascript Performance


Es ist bekannt, dass Drupal relativ viel Serverressourcen frisst. Das ist ja auch relativ leicht zu verstehen, da man schnell einige Module installiert hat, die dann halt laufen. Das Problem ist jedoch nicht nur die Serverperformance, sondern auch die Client Performance. Diese wird hauptsächlich durch Javascript geprägt.

Immer mehr Module machen extensiven Gebrauch von Javascript und im Speziellen von der Bibliothek JQuery. Die ist ja auch super gut, ABER, es kann wirklich zu Performanceproblemen führen. Wo liegt das Problem?

Mit Jquery können Funktionen an HTML Elemente gebunden werden NACHDEM die Seite aufgebaut worden ist. z.B. via

$('.test').click(function(){alert('test'})

Jede Klasse test wird also jetzt die Funktion alert('test') angehängt. Im Kleinen funktioniert das sicher gut, hat man jedoch viele solche Aufrufe, so wird das sehr schnell sehr träge. Ein typisches Symtom dafür ist: Die Seite ist bereits vollständig geladen, der Browser ist jedoch noch für einige Sekunden nicht ansprechbar und wenn man die Ressourcenauslastung des lokalen PCs anschaut so ist diese auf 100% (CPU). Das kann ja nichts mit der Datenbank zu tun haben, da diese auf dem Server läuft.

Was kann man tun?

  • Überflüssige Module entfernen
  • JQuery update durchführen (die alte Version, welche mit Drupal 5 kommt ist extrem lahm)
  • Mehr überflüssige Module entfernen. Hand aufs Herz: Wieviele dieser Javascript Module haben wirklich einen Zusatznutzen? … oky, sie erleichtern das Leben…