Я использую etag для кеширования. для внешнего интерфейса я использую модуль angular-http-etag. Для первого запроса API возвращает данные со статусом 304. после этого API возвращает 304 с пустыми данными. для первого запроса отсутствует заголовок контроля кэша, а для второго запроса - контроль кэша = max-age = 0