Как я могу использовать один и тот же кэш рендеринга, но для json?

Я работаю над REST API, и мне бы очень хотелось иметь возможность использовать тот же механизм для ответов, что и Drupal для кешированного контента.

К сожалению, нет кеша рендеринга, все ответы JSON. Таким образом, никакие настройки #ccache или политика кэша страниц не будут применяться из коробки.

Итак, мне интересно, возможно ли это, и если так , как я должен к нему подходить ?

В основном я должен кэшировать ответы таким же образом, как и объекты, например. Поэтому, если контекст является конкретным пользователем, и я показываю информацию о сущности, я бы хотел получить свежую информацию, если объект был изменен, но тот же контент, если нет, и пользователь тот же ... и так далее.

6 голосов | спросил user21641 31 +03002016-10-31T01:16:12+03:00312016bEurope/MoscowMon, 31 Oct 2016 01:16:12 +0300 2016, 01:16:12

1 ответ


3

Вы должны использовать кешируемый ответ, а затем вы можете добавлять кэш-метаданные из массива рендеринга или непосредственно из объекта:

use Drupal\Core\Cache\CacheableJsonResponse;
use Drupal\Core\Cache\CacheableMetadata;

  $response = new CacheableJsonResponse($json, 200);

  $response->addCacheableDependency(CacheableMetadata::createFromRenderArray($content));

  $response->addCacheableDependency($entity);

Если вы используете основной REST API, это уже должно быть реализовано.

ответил 4k4 31 +03002016-10-31T12:40:18+03:00312016bEurope/MoscowMon, 31 Oct 2016 12:40:18 +0300 2016, 12:40:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132