У меня есть стандартное приложение блога с сообщениями и пользователями, которые могут добавлять эти сообщения в избранное.
Цели
- Когдапользователь просматривает список сообщений, он должен видеть указание (изображение), является ли каждое сообщение избранным.Анонимные пользователи не имеют избранных.
- Список сообщений необходимо кэшировать в Varnish (как для анонимных, так и для вошедших в систему пользователей), потому что это дорого для вычисления.
Идеи
Кэшируйте страницу списка в Varnish и используйте ESI для получения информации о избранном ...
- ... для каждого сообщения пользователя, создающеготекущий запрос Недостатки : 50 запросов ESI на страницу (в основном проблема N + 1 ).
- ... как объект JSON, который затем сохраняется на странице.На клиенте этот объект читается, и DOM манипулирует, чтобы указать информацию о избранном. Недостаток : не работает для пользователей без Javascript.
- ... как фрагмент кода CSS, который хранится на странице.CSS определяет, что отображать для каждого поста. Недостаток : работает только для стилевого контента (например, изображений).Невозможно отобразить текстовую информацию.
Я упускаю какие-либо возможности для достижения того, чего я хочу?Идея 3 кажется самым умным ответом, но это не сработало бы, если бы я также хотел отобразить дату, когда пользователь одобрил публикацию.