mxHeadless
REST API gateway для headless-фронтендов на MODX 3. Ресурсы, объекты, OpenAPI, API keys и OAuth

Публичные GET можно кэшировать в браузере или CDN, если mxheadless_cache_enabled=true.
На безопасных маршрутах для anonymous:
Cache-Control: public, max-age=300
ETag: "a1b2c3d4e5f6..."max-age из mxheadless_cache_ttl (default 300 с).
Передайте ETag из прошлого ответа:
curl -s -D - https://example.com/api/v1/resources/5 \
-H 'If-None-Match: "a1b2c3d4e5f6..."'Если представление не изменилось, сервер ответит 304 Not Modified без тела.
В Access-Control-Expose-Headers есть ETag, чтобы браузерный fetch мог revalidate. См. CORS.
Ответы с сессией, API key или ?preview=true:
Cache-Control: private, no-storeНе кладите их на общий CDN.
Save и delete ресурса сбрасывают теги кэша объекта и списков. Для headless-фронта используйте webhooks и ISR revalidation.