XCache is a PHP opcode cacher. It improves performance for PHP applications by caching compiled PHP code in memory for later requests. When configured properly, this can potentially increase the rate of page generation (speed) by up to five times.
More information can be found on the XCache website:
How to make XCache available
XCache is an on-demand available option to DreamHost VPS users. It can be enabled on a per-domain basis, or can be set up for all domains.
Enabling FastCGI and XCache on a domain
- Navigate to the (Panel > ‘Domains’ > ‘Manage Domains’) page.
- Click the Edit button to the right of your domain under the ‘Web Hosting’ column.
- Scroll down to the ‘Web Options’ section:
- Select which version of PHP you’d like to use in the dropdown menu. Make sure to choose a FastCGI option.
- Check the box next to ‘PHP XCache Support’.
- Scroll down and click the blue Change settings button to save your changes.
Enabling XCache for all sites on a VPS
There is also an option on your VPS configuration page (Panel > ‘VPS’ > ‘Dashboard’) to enable PHP cache for the entire VPS.
- Click the Configure button to the right of your server to view this option.
- From the 'PHP cache' dropdown, choose 'active'.
- Click the Save settings... button to save your changes.
If all domains are set to use FCGI or CGI for the PHP mode, then you may safely deactivate mod_php in the PS configuration to save a good deal of memory. All modern PHP applications run fine exclusively on FCGI.
[xcache] ; ini only settings, all the values here is default unless explained ; select low level shm/allocator scheme implementation xcache.shm_scheme = "mmap" ; to disable: xcache.size=0 ; to enable : xcache.size=64M etc (any size > 0) and your system mmap allows xcache.size = 64M ; set to cpu count (cat /proc/cpuinfo |grep -c processor) xcache.count = 2 ; just a hash hints, you can always store count(items) > slots xcache.slots = 8k ; ttl of the cache item, 0=forever xcache.ttl = 0 ; interval of gc scanning expired items, 0=no scan, other values is in seconds xcache.gc_interval = 0 ; same as above but for variable cache xcache.var_size = 0M xcache.var_count = 1 xcache.var_slots = 8K ; default ttl xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 xcache.test = Off ; N/A for /dev/zero xcache.readonly_protection = Off ; for *nix, xcache.mmap_path is a file path, not directory. ; Use something like "/tmp/xcache" if you want to turn on ReadonlyProtection ; 2 group of php won't share the same /tmp/xcache ; leave it blank(disabled) or "/tmp/phpcore/" ; make sure it's writable by php (without checking open_basedir) xcache.coredump_directory = "" ; per request settings xcache.cacher = On xcache.stat = On xcache.optimizer = On [xcache.coverager] ; per request settings ; enable coverage data collecting for xcache.coveragedump_directory and xcache_$ xcache.coverager = Off ; ini only settings ; make sure it's readable (care open_basedir) by coverage viewer script ; requires xcache.coverager=On xcache.coveragedump_directory = ""
XCache best practices
Be sure to adhere to the following best practices when using XCache:
- For WordPress sites, the W3TC WordPress cache plugin and the DreamHost version of XCache may conflict. For maximum compatibility, be sure that the W3TC plugin setting ‘Enhanced Disk Caching’ is enabled as this enables the static file caching.
- For DreamPress sites, DreamHost recommends that you do not combine the use of XCache and the W3TC cache plugin. Instead, only choose one for your site.
- Enabling XCache increases overall memory usage, however it also speeds up page loading time. It is designed to use memory and it increases memory usage because each site needs to spawn its own PHP processes with a custom config. If your site is experiencing memory limit issues, you may want to disable XCache during any debugging process. Other caching options can be found in the Caching your Site article.