@Api\Cache
Enable caching for a TYPO3 RestAPi endpoint
If the method of an endpoint has the @Api\Cache annotation set, then its result
will be cached. The next time this endpoint is called, the result will be retrieved
from the cache without calling the method.
Useful, if static data should be loaded like settings, dropdown-values or country-lists etc. The cache will only be cleared and rebuilt, if the "clear cache" button is clicked in the backend.
The syntax is:
@Api\Cache
Copied!
Here is a full example:
<?php
namespace My\Extension\Api;
use Nng\Nnrestapi\Annotations as Api;
use Nng\Nnrestapi\Api\AbstractApi;
/**
* @Api\Endpoint()
*/
class Example extends AbstractApi
{
/**
* @Api\Cache
* @Api\Access("public")
*
* @return array
*/
public function getAllAction()
{
$result = $this->someComplicatedOperation();
return $result;
}
}
Copied!
Handling the cache yourself
In case you would like to handle the caching of data yourself, the nnhelpers
Cache-methods are very useful. Here is a basic example – have a look at the
nnhelpers documentation
for more info:
<?php
namespace My\Extension\Api;
use Nng\Nnrestapi\Annotations as Api;
use Nng\Nnrestapi\Api\AbstractApi;
/**
* @Api\Endpoint()
*/
class Example extends AbstractApi
{
/**
* @Api\Access("public")
*
* @return array
*/
public function getAllAction()
{
$cacheIdentifier = 'example';
if ($cache = \nn\t3::Cache()->get($cacheIdentifier)) {
return $cache;
}
$result = $this->someComplicatedOperation();
return \nn\t3::Cache()->set($cacheIdentifier, $result);
}
}
Copied!