Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort des Fachgutachters
Einleitung
1 Einführung
2 Installation
3 Erste Schritte
4 Einführung in Ruby
5 Eine einfache Bookmarkverwaltung
6 Test-Driven Development
7 Rails-Projekte erstellen
8 Templatesystem mit ActionView
9 Steuerzentrale mit ActionController
10 Datenbankzugriff mit ActiveRecord
11 E-Mails verwalten mit ActionMailer
12 Nützliche Helfer mit ActiveSupport
13 Ajax on Rails
14 RESTful Rails und Webservices
15 Rails mit Plug-ins erweitern
16 Performancesteigerung
17 Sicherheit
18 Veröffentlichen einer Rails-Applikation auf einem Server
Ihre Meinung?

Spacer
 <<   zurück
Ruby on Rails 2 von Hussein Morsy, Tanja Otto
Das Entwickler-Handbuch
Buch: Ruby on Rails 2

Ruby on Rails 2
geb., mit DVD
699 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-89842-779-1
Online bestellenPrint-Version Jetzt Buch bestellen
* versandkostenfrei in (D) und (A)
Pfeil 16 Performancesteigerung
  Pfeil 16.1 Einführung
  Pfeil 16.2 Page-Caching
  Pfeil 16.3 Action-Caching
  Pfeil 16.4 Fragment-Caching
  Pfeil 16.5 Caching von CSS- und JavaScript-Dateien
  Pfeil 16.6 Caching mit memcached
  Pfeil 16.7 Zusammenfassung


Rheinwerk Computing - Zum Seitenanfang

16.6 Caching mit memcached  Zur nächsten ÜberschriftZur vorigen Überschrift


Rheinwerk Computing - Zum Seitenanfang

Grundlagen  Zur nächsten ÜberschriftZur vorigen Überschrift

Für große Websites

Für Websites mit extrem viel Traffic kann die Caching-Technologie memcached eingesetzt werden. memcached wurde urspünglich für die Website LiveJournal entwickelt, um die Datenbankabfragen im Haupspeicher (RAM) zwischenzuspeichern. Inzwischen wird memcached von einigen großen Websites wie YouTube, Wikipedia, Facebook und digg eingesetzt.

Da in den meisten Fällen der Datenbankzugriff der »Flaschenhals« einer Webapplikation ist, kann durch Einsatz von memcached die Performance erheblich gesteigert werden.

memcached-Server

Um memcached einzusetzen, muss auf dem Server ein memcached-Hintergrundprozess oder memcached-Server laufen, der für das Caching zuständig ist. Dieser Hintergrundprozess fungiert im Prinzip als Hash-Speicher, in dem Key-Value-Paare gespeichert werden können. Das Ergebnis einer Datenbankabfrage wird in einem Value gespeichert. Um dieses Ergebnis später wiederzufinden, wird es unter einem Namen, dem Key, im memcached-Server gespeichert. Die Webapplikation sendet ein Key-Value-Paar an den Server zum Cachen einer Datenbankabfrage oder stellt über einen Key eine Anfrage und erhält, falls vorhanden, den Value zurück.

Abbildung  memcached-Client und -Server

Sicherheit

Aus Sicherheitsgründen muss dafür gesorgt werden, dass nur autorisierte Applikationen auf den memcached-Server zugreifen können. Der memcached-Server bietet selbst keinen Schutzmechanismus an. Daher sollte auf dem Server z. B. eine Firewall entsprechend konfiguriert werden.

Erreichbarkeit

Beim Einsatz des memcached-Servers ist außerdem darauf zu achten, dass er immer erreichbar ist. Sollte es zu Problemen kommen, ist auch die Webapplikation, die memcached verwendet, nicht mehr erreichbar.

Da die Konfiguration und der Betrieb eines Servers mit memcached viel Erfahrung benötigt, empfehlen wir dem Leser, erst dann memcached einzusetzen, wenn die Caching-Technologien, die Rails anbietet, nicht mehr ausreichen.

memcached-Client

Ein memcached-Client ist bisher in Rails von Haus aus noch nicht integriert. Es gibt jedoch Erweiterungen, mit denen memcached in Rails genutzt werden kann.

Ab Rails 2.1 ist memcached integriert
Ab der Version 2.1 von Rails wird die Funktionalität in das Framework integriert. Zum Zeitpunkt des Drucks dieses Buches war diese Version noch nicht veröffentlicht. Falls Sie Version 2.1 bereits einsetzen, schauen Sie bitte auf der Website zum Buch ( http://www.railsbuch.de ) nach, ob aktualisierte Informationen zu diesem Thema vorliegen.

Wir gehen in diesem Abschnitt daher nur grundlegend auf das Thema ein.

Dieser Abschnitt soll Ihnen einen Überblick vermitteln, wie memcached in Rails eingesetzt werden kann. Aufgrund der komplexen Thematik kann memcached hier nicht umfassend behandelt werden.


Rheinwerk Computing - Zum Seitenanfang

Installation  Zur nächsten ÜberschriftZur vorigen Überschrift

Um auf den memcached-Server aus einer Webapplikation zugreifen zu können, benötigt man einen memcached-Client. Für Ruby bzw. Rails gibt es das RubyGems-Paket memcache-client .

Mit diesem Plug-in kann man nicht nur ActiveRecord-Datenbank-Abfragen cachen, sondern auch die Dateien des Fragment-Caching, um noch eine höhere Performance zu erreichen.


Rheinwerk Computing - Zum Seitenanfang

Installation des memcached-Servers  Zur nächsten ÜberschriftZur vorigen Überschrift

Es ist sehr empfehlenswert, den memcached-Server auf dem Entwicklungsrechner zu installieren, obwohl es nur auf dem Produktionsrechner erforderlich ist, damit Sie auch lokal überprüfen können, ob die Skripte laufen.

Mac OS X

Unter Mac OS X kann der memcached-Server am einfachsten mit dem Paketmanagement-System Mac Ports installiert werden.

Listing  Installation des memcached-Servers unter Mac OS X

sudo port install memcached

Windows

Von der Website http://jehiah.cz/projects/memcached-win32/ kann die Windows-Version heruntergeladen werden.

Ubuntu und Debian

Unter Ubuntu oder Debian kann der memcached-Server mit dem apt-get - oder aptitude -Befehl installiert werden:

Listing  Installation des memcached-Servers unter Ubuntu und Debian

aptitude install memcached

Für die Dokumentation und Installation des memcached-Servers siehe auch http://danga.com/memcached/

Damit Ruby bzw. Ruby on Rails auf den memcached-Server zugreifen kann, muss ein Client für den memcached-Server installiert werden. Wir verwenden dazu das RubyGems-Paket memcache-client:

Listing  Installation des memcache-Client

sudo gem install memcache-client

Mit dem Rails-Plug-in cache_fu ist die Integration des Clients memcache-client in Ihre Rails-Applikation relativ leicht:

Listing  Installation des Cache-Fu-Plug-ins

ruby script/plugin install \
svn://errtheblog.com/svn/plugins/cache_fu

Konfigurieren

Während der Installation wird im config -Verzeichnis die Konfigurationsdatei memcached.yml angelegt, in der der memcache-client für den Zugriff auf den memcached-Server konfiguriert wird. Wenn auf dem Entwicklungsrechner der memcached-Server installiert ist, so wird die Konfigurationsdatei entsprechend automatisch angepasst. Es ist zu beachten, dass auf dem Produktionsserver gegebenenfalls andere Einstellungen vorzunehmen sind.


Rheinwerk Computing - Zum Seitenanfang

Verwendung  Zur nächsten ÜberschriftZur vorigen Überschrift

Um sämtliche Datenbankabfragen zu cachen, muss im entsprechenden Model der Befehl acts_as_cached hinzugefügt werden:

Listing  app/models/product.rb

class Product < ActiveRecord::Base

  acts_as_cached

end

Es ist sinnvoll, nur die Datenbankabfragen zu cachen, die für die Öffentlichkeit bestimmt sind. Es gibt auch die Möglichkeit, nur bestimmte Abfragen zu cachen. Angenommen, wir hätten ein Feld enabled, das angibt, ob das Produkt für die Öffentlichkeit sichtbar ist:

Listing  app/models/product.rb

class Product < ActiveRecord::Base

  acts_as_cached :conditions => 'enabled = 1' 

end

memcached-Server starten

Bevor die Applikation mit ruby script/server gestartet werden kann, muss vorher der memcached-Server gestartet werden. Das Plug-in hat Rake-Tasks zum Starten, Stoppen und Neustarten installiert. Zum Starten des memcached-Servers rufen Sie einfach den folgenden Rake-Task auf:

rake memcached:start


Rheinwerk Computing - Zum Seitenanfang

Löschen des Caches  topZur vorigen Überschrift

Zum Löschen des Caches steht die Methode expire_cache zur Verfügung.

Damit der Cache nach jedem Speichern gelöscht wird, kann der Befehl wie folgt eingesetzt werden:

Listing  app/models/product.rb

class Product < ActiveRecord::Base

  acts_as_cached :conditions => 'enabled = 1'
  after_save :expire_cache

end

Cache-Fu

Das Cache-Fu-Plug-in bietet noch eine Reihe von weiteren Features, wie z. B. das Löschen des Caches zu einer festgelegten Zeit.

Weitere Informationen zu dem Cache-Fu-Plug-in erhalten Sie auf der Webseite http://errtheblog.com/posts/57-kickin-ass-w-cachefu .



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 <<   zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Ruby on Rails 2
Ruby on Rails 2
Jetzt Buch bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Ruby on Rails 3.1






 Ruby on Rails 3.1


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Rheinwerk-Shop: JavaScript






 JavaScript


Zum Rheinwerk-Shop: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern