Evo_nginx_boost extension

Wstęp

Wtyczka Evo_nginx_boost pozwala na cachowanie stron generowanych w TYPO3 za pomocą memcache. Moduł może pracować w dwóch trybach:

  • z serwerem proxy NGINX,  zobacz diagram
  • standalone – za pomocą prostej modyfikacji typo3_src/index.php można odczytywać memcachowane strony bezpośrednio z memcache. Proces PHP wysyła do przeglądarki dokładne to co jest zapisane w memcache. Dla uzyskania wysokiej wydajności dane nie są w żadne sposób serializowane ani przetwarzane.

Wymagania

  • PHP 5.X z obsługą memcache
  • opcjonalnie serwer NGINX

Screenshoty

Coniguration of evo_nginx_boost

Coniguration of evo_nginx_boost

Backend module

Backend module

Page memcache sesttings

Page memcache sesttings

Clearing memcache page

Clearing memcache page

Instalacja

Pobierz wtyczkę z TER i zainstaluj. W zależności od trybu pracy wybierz odpowiednią konfiguracji opisaną w następnej sekcji.
Jeśli zdecydujesz się na instalację standalone edytuj plik typo3_src/index.php i dodaj pod linią error_reporting (E_ALL ^ E_NOTICE); poniższy kod:

require_once(’typo3conf/ext/evo_nginx_boost/tx_evonginxboost_index.php’);

Alternatywne rozwiązanie z użyciem NGINXa jest o wiele bardziej wydajne ale wymaga instalacji dodatkowego oprogramowania na serwerze. Opis całej architektury oraz zasady działania znajdziesz w artykule Jak przyspieszyć działanie TYPO3 przy pomocy nginx’a.

Konfiguracji evo_nginx_boost

Nginx

Property: Data type: Description: Default:
enable string enable disable memcaching 1
forceTimeoutToAllPages int set default memcache expiration time (has priority over TYPO3 setting) 0
disableCacheForLoogedUsers int enable/disable memcaching for logged users 0
cleanOnClearAllCache int if set, memcache is cleared when backend user click clear cache
setPageCacheTimeout OverrideAllTypoSettings (deprecated, always set to true) int if you enable this option, you can override all expires time from your user_int extension, fg if you have page with four extensions and each extension calls static function:

if (method_exists(’tx_evo_nginx_boost’, ’setPageCacheTimeout’)
tx_evo_nginx_boost::setPageCacheTimeout($timeout);

evo_nginx_boost set expire time to the lowest value set in all 4 plugins

1
_mainServerIP string memcache server ip
_mainServerPort string memcache server port
_mainServerPersistent int enable persistant connection 1
_mainServerTimeout string memcache server connection timeout 1
memcacheSignature int add signature to end o pages 1
memcacheSignatureText string text of signature fg “CACHED BY ME :) ”. If you set memcacheSignature = 1 time of expiration is added to the end of memcacheSignatureText 1
excludedUrls array Set in ext_localconf. This is array of urls which should be excluded from memcaching. Let say you have confirmation message after successfuly saving post in user’s blog. Page with message “your post was saved” will be memcached. You can add parameter message=1 and put this in array. Evo_nginx_boost exclude this url from memcaching. 1
cleanupAllowedFromIP string list of comma separated ip addresses from which Garbage Collector can be run [eID] 1
garbageCollectorProbability float probability of starting garbabge collector, 1.0 = 1% 1.0
useUrlPrefixClear int if set, when POST is sent, cache is cleared for urls starting with request_url (referrer) instead page id, fg if you sent POST from page www.mysite.com/mysubpage/article1/ extension clears cache for pages www.mysite.com/mysubpage/article1/ www.mysite.com/mysubpage/article1/some/ www.mysite.com/mysubpage/article1/some2/ etc 0
onlyLocalhost string set if memcache nginx and apacha are on the same server, domain is not added to memcache key 1
addCachedAnchorFlag string add special tag before closing body tag, you can check from js if page is from memcache 1
debug int start debugging 0
debugAllowedIP string list of comma separated ip addresses from which debug is generated 1
debugOnlyErrorsLogging int if set only errors are logged (browser and db table) 0
debugWriteToDB int if set, debug is written to db 0
debugWriteToOutput int if set, debug is written to browser (html source, bottom of page) 0
extendTypo3indexphp int set if you don’t want to use nginx, typo3_src/index.php should be changed 0

Per strona konfiguracja

Każda strona w drzewie może mieć różne konfiguracje cachowania. Jeśli nic nie zostanie ustawione evo_nginx_boost czyta ustawienia z config.cache_period. Ustawienia memcachowania mogą być różnie określane dla użytkowników zalogowanych i nie zalogowanyc. Przykład: w czasie dużego ruchu na forum czas cachowania dla niezalogowanych może być ustawiony na 120s gdzie użytkownik zalogowany może mieć wyłączone memcachowanie całkowicie.

Per page configuration

Zarządzanie memcachem.

Ręczne usuwanie danych z memcache:

1. Standardowa funkcja Clear FE cache
2. Usuwanie memcache per strona, dostępne w menu kontextowyw dla każdej strony w drzewie. Zobacz screen.
3. Usuwanie memcache rekursywnie dla gałęzi, dostępne w menu kontekstowym. Zobacz screen.

Usuwanie automatyczne podczas wysyłania POSTow:

1. Memcache jest usuwany dla strony do której został wysłany został POST, chyba że POST został dodany do tablicy noClearCachePost, dostępnej w ext_localconf.php

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$_EXTKEY]['noClearCachePost'] = array ( // dont clear cache when one of this valudes is a key in $_POST array
  1.        'dontClearCache',
  2.        'logintype',
  3.    );

Dodatkowo dostępna jest też tablica excludedPost w której można wpisać rodzaje POSTów,  które evo_nginx_boost zapisze do memcache jako zwykłe wywołanie strony. Takie rozwiązanie może być przydatne kiedy mamy wyszukiwarkę i chcemy memcachować wyniki.

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$_EXTKEY]['excludedPost'] = array (    // This page will be stored in cache. Use to force memcache rewrite
  1. 'search',
  2. );

Pomijanie URli

Bardzo przydatną funkcją jest również możliwość pomijania URLi z memcachowanie. Jeśli na stronie mam captche i chcemy aby memcache nigdy nie memcachowal tych wywołań, możemy dodać odpowiedni wpis do tablicy excludedUrls, również dostępnej w ext_localconf.php

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$_EXTKEY]['excludedUrls'] = array ( // perl regullar expressions
  1.        //'/ajax_load_id=[0-9]+/',
  2.        '/captcha.php?/',
  3.    );

Pliki do pobrania:

-nginx configuration file
-wtyczka evo_nginx_boost ver 1.9.5

  • Share/Save/Bookmark