nginx+memcached - cache szybkozmienny

nginx to lekki serwer WWW (i proxy) zaprojektowany z myślą o wysokiej wydajności, przy zachowaniu niskich wymagań pamięciowych.

memcached to system cachowania obiektów w pamięci, udostępniający API dla wielu języków. Dane przechowywane są jako pary klucz-wartość i dostępne dla każdego, bez autoryzacji. Z założenia dane w memcache nie są trwałe, są tracone w momencie restartu procesu lub timeoutu danego klucza.

W przypadku serwisów generujących duże ilości requestów, które są z zasady tymczasowe, a wymagają narzutu na wygenerowanie (np. xmle, serializowane dane z bazy w jsonie, itp.), można zastosować kombinację nginx i memcached, dla osiągnięcia znacznego wzrostu wydajności i zmniejszenia obciążenia bazy.

NginxHttpMemcachedModule pozwala na użycie jako backendu memcache, przekazywanie uri jako klucza i serwowanie odpowiedzi z cache'u. Niestety moduł nie obsługuje setów, więc konieczne jest napisanie sobie skryptu wypełniającego cache obiektami (np. w cronie co kilka minut), ustawiając czas expirowania kluczy dłuższy niż częstotliwość wypełniania.

Do interfejsowania memcache w PHP służy PECL::Package::memcache, natomiast w Perlu na przykład Cache::Memcached. Przygotowując klucze z poziomu PHP należy pamiętać o wyłączeniu Memcached::OPT_COMPRESSION, ponieważ wartości w memcached powinny być niegzipowane.