Skip to content
This repository has been archived by the owner on Sep 12, 2021. It is now read-only.

Cache the content file using the PHP Memcached extension

License

Notifications You must be signed in to change notification settings

bnomei/kirby3-page-memcached

Repository files navigation

 

ARCHIVED

use Kirby3 Boost instead

 

Kirby 3 Page Memcached

Release Downloads Build Status Coverage Status Maintainability Twitter

Kirby 3 Plugin to cache the content file using the PHP Memcached extension

Commercial Usage

This plugin is free (MIT license) but if you use it in a commercial project please consider to

Installation

  • unzip master.zip as folder site/plugins/kirby3-page-memcached or
  • git submodule add https://github.com/bnomei/kirby3-page-memcached.git site/plugins/kirby3-page-memcached or
  • composer require bnomei/kirby3-page-memcached

Usage

To use this plugin create Page-Models and extend the \Bnomei\MemcachedPage class. This will read and write a copy of your Content-File to and from Memcached.

site/models/example.php

<?php

class ExamplePage extends \Bnomei\MemcachedPage
{
    // that's it. all done. 👍
}

TIP: If you set Kirbys global debug option to true all cached Content-Files will be flushed.

site/templates/example.php

<?php
/** @var ExamplePage $page */
$checkIfContentFileIsMemcached = $page->isMemcachedPage(); // bool

Performance, Limitations and Alternatives

How much and if you gain anything regarding performance depends on the hardware. But on most production servers reading data from RAM should be faster than reading files from SSD disks.

Defaults for Memcached APCu Redis
max memory size 64MB 32MB 0 (none)
size of key/value pair 1MB 4MB 512MB

The Redis Cachedriver Plugin has a RedisPage class that works pretty much like the MemcachedPage class but uses Redis.

Settings

bnomei.page-memcached. Default Description
host 127.0.0.1
port 11211
prefix page-memcached
expire 0 in minutes, 0 = infinite
enforce true will throw an Exception if Memcached class is missing. Turn off if you use php CLI without Memcached support.

TIP: To connect to a unix socket use its id as value for host and set port to 0

Known Issues

PHP CLI rarely has Memcached enabled by default. In that case the plugin will read the page content file from disk.

Dependencies

  • PHP Memcached extension and class

Disclaimer

This plugin is provided "as is" with no guarantee. Use it at your own risk and always test it yourself before using it in a production environment. If you find any issues, please create a new issue.

License

MIT

It is discouraged to use this plugin in any project that promotes racism, sexism, homophobia, animal abuse, violence or any other form of hate speech.