How do I use XCache on a private server?

XCache is not compatible with PHP 7. If your site is using PHP 7, use OPcache instead.

As of Sept 2017, all new VPS machines only offer OPcache.

XCache is a PHP opcode cacher, which improves performance for PHP applications by caching compiled PHP code in memory for later requests. When configured properly, XCache can potentially increase the rate of page generation (speed) by up to five times.

You can read more about it at XCache's website:

How to make XCache available

Prior to Sept 2017, XCache was available for DreamHost VPS users. Starting in Sept 2017, new VPS machines only offer OPcache which is compatible with PHP 7 and is recommended over XCache.

Enabling FastCGI and XCache on a domain

These steps only apply to VPS machines created prior to Sept 2017. New VPS machines only offer OPcache.

  1. Navigate to the (Panel > ‘Domains’ > ‘Manage Domains’) page.
  2. Click the Edit button to the right of your domain under the ‘Web Hosting’ column.
    01 xcache panel.fw.png
  3. Scroll down to the ‘Web Options’ section and make the following selections:
    • Select which version of PHP from the dropdown list you’d like to use. Make sure to choose a FastCGI option.
    • Check the box next to ‘PHP XCache Support’.
  4. Scroll down and click the blue Change settings button to save your changes.

Configuring XCache

If you can view XCache through a phpinfo() file, then you can configure it through a custom PHP.ini file by using the following settings:

; 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

; 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 allows static file caching.
  • For DreamPress sites, XCache is not available. DreamPress sites automatically enable OPcache which is a newer and more effective PHP cache option.
  • Enabling XCache speeds up page loading time but it also increases overall memory usage. It is designed to increase memory usage as each site must 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.

See also

Internal links

External links

Did this article answer your questions?

Article last updated PST.