У нас есть проект Silverstripe 4, который действует как безголовая CMS, возвращая группу сложных моделей данных в формате JSON.
Вот пример кода:
class APIController extends ContentController
{
public function index(HTTPRequest $request)
{
$dataArray['model1'] = AccessPointController::getModel1();
$dataArray['model2'] = AccessPointController::getModel2();
$dataArray['model3'] = AccessPointController::getModel3();
$dataArray['model4'] = AccessPointController::getModel4();
$dataArray['model5'] = AccessPointController::getModel5();
$dataArray['model6'] = AccessPointController::getModel6();
$this->response->addHeader('Content-Type', 'application/json');
$this->response->addHeader('Access-Control-Allow-Origin', '*');
return json_encode($dataArray);
}
Проблемамы имеем дело с тем, что модели данных стали настолько сложными, что время генерации JSON исчисляется секундами.
JSON должен изменяться только после обновления содержимого сайта, поэтому в идеале мы хотели бы кэшировать JSON& вместо того, чтобы динамически генерировать его для каждого вызова.
Каков наилучший способ кэширования JSON в приведенном выше примере?