2016-03-15 4 views
0

Как кэшировать ответы API, созданные с помощью Symfony?Кэширование API с помощью Symfony2

Я начал копаться в FosCacheBundle и SymfonyHttpCache, но я не уверен в моей утилите.

Вы можете получить доступ только к API с маркером в заголовке, и каждый пользователь получает те же данные в своем ответе для одного и того же URL-адреса (и с теми же параметрами GET).

Я хотел бы иметь запись кэша для каждого из моих URL-адресов (включая параметры получения) , а также, возможно ли изменить порядок параметров GET до того, как запрос будет обработан моей системой кэширования (чтобы система не создавала несколько записей кэша для «URL? foo = bar & foz = baz» и «URL? foz = baz & foo = bar», который возвращает те же данные)

ответ

1

Ну, есть несколько способов.

Но проще всего это:

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

В вашем текущем действии контроллера после аутентификации и до создания полезной нагрузки проверьте, есть ли запись в memchache. Если нет, создайте полезную нагрузку и сохраните ее в memcache, чем верните ее. Когда приходит следующий запрос, не будет доступа к БД, поскольку он будет возвращен из memcache. Просто не забывайте обновлять кеш, как часто вам это нужно.

Примечание: «Ранняя оптимизация - это корень всех зла», а «Серверы дешевле, чем часы программиста» - это вещи, о которых следует помнить. Не затрудняйте свою жизнь с помощью действительно продвинутых методов кеширования, если вам это не нужно.

Смежные вопросы