Как кэшировать ответ JSON в контроллере Silverstripe? - PullRequest
1 голос
/ 02 декабря 2019

У нас есть проект 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 в приведенном выше примере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...