Ответ 1
Я считаю, что вы имеете в виду кэширование на двух разных уровнях.
Angular cache (см. $cacheFactory) является кешем Javascript в памяти. Кэш хранит данные в объекте Javascript. У вас есть контроль над ними в клиенте. Кэш не будет сохраняться, так как он исчезнет после перехода на другую веб-страницу или обновления, если вы не реализуете собственный кеш, который сохраняется в локальном хранилище.
Параметр Cache-Control
в ответе управляет кешем браузера. Вы не можете напрямую манипулировать этим кешем из Javascript. Но если вы правильно настроите заголовки кеша, они будут сохраняться на всех сеансах. Он также позволяет любым промежуточным прокси-серверам, которые могут обслуживать несколько клиентов, знать, могут ли они кэшировать запрос, уменьшая общий трафик больше, чем кеш Javascript.
Что касается того, какой подход следует использовать, когда я бы сказал, что в целом полагаюсь на кеш браузера, так как он намного ниже и сохраняется на всех сеансах. Если вам нужно больше контролировать то, что получает кеширование, которое можно только разумно получить на стороне клиента, используйте кеш Javascript. Или вы можете просто включить оба варианта и получить преимущества обоих, и нести с дополнительным обслуживанием/сложностью кода.