Path

7x / documentation / exponential / high performance / exponential


Caution: This documentation is for Exponential, from version 3.x to 6.x.
For 5.x documentation covering Platform see Exponential Platform Documentation, for difference between legacy and Platform see 5.x Architecture overview.

Exponential

INI Configuration

You should apply the following configuration for Exponential, in site.ini:

[DebugSettings]
# always disable any Debug information on
# live installations
DebugOutput=disabled
 
[TemplateSettings]
# always enable template compilation
# on live sites, you should also consider
# precompiling template by using the bin/php/eztc.php script
TemplateCompile=enabled
# always enable {cache-block} instructions
TemplateCache=enabled
# disabling template compression is recommended
# as you can use a lot of disk space in almost any
# situation
# if ever you want to enable this feature you will
# have to know that is will consume at lot of CPU just
# to compress each template !!!
TemplateCompression=disabled
# you can disable this because the template optimize
# does not actually optimize anything
TemplateOptimization=disabled
# always turn off template debug, especially if you are
# working on bad written templates
# if the templates are not written correctly fix them
# using ./bin/php/eztemplatecheck.php --debug=error will
# help you
Debug=disabled
 
[ContentSettings]
ViewCaching=enabled
 
[OverrideSettings]
# this caches all template override rules
# it makes sense to disable it for development
# but never for production
Cache=enabled
 
[HTTPHeaderSettings]
# If you want to configure the way HTTP headers
# are sent then you must enable this feature
# You will need to configure you own HTTP headers value though
CustomHeader=enabled
 
[DatabaseSettings]
# Always disable this on production
# even if no SQL debug should be shown if
# DebugOutput=disabled
SQLOutput=disabled
 
[RegionalSettings]
# This make it possible to avoid a few I/Os to check
# for the translation cache
TranslationCheckMTime=disabled
 
[URLTranslator]
# If you do not use the url translation system to
# redirect module urls like for instance user/login
# then this will save 1-2 db calls on those pages.
TranslatableSystemUrls=disabled

PHP configuration

In order to get maximum performance and avoid as much syscalls as possible at least on the FS level, you should use the following configuration for config.php:

// Should make it possible to set the PHP include_path to '.'
// and so to limit disk i/o generated by the include_path
define( 'EZP_USE_BUNDLED_COMPONENTS', true );
// This avoids any magical ini cache clear stuff
// this means that whenever an INI value is changed
// you will have to clear the ini cache manually
// by using the php ./bin/php/ezcache.php --clear-tag=ini
// CLI tool
define( 'EZP_INI_FILEMTIME_CHECK', false );

Template hints

cache_ttl=0

Do not disable view cache using cache_ttl=0, but try solve your problem in another way.

ignore_content_expiry

On medium to large sites it is usually acceptable that changes in menus do not update instantly. Using

ignore_content_expiry

will avoid that all cache blocks are invalidated on every edit or publish operation.

Alternatively, if it is possible to specify a specific part of the node tree that should trigger expiry, you can use

subtree_expiry=/path/to/parent/node

In both cases, make sure you tweak expiry time if you need something higher or lower then the default 2 hours.