Маяк Google предлагает предлагает год, но также объясняет, что его эвристика носит более общий характер, чем жестко заданный предел.
Если вы хотите последовать их совету, проще всего использовать год, хотя меньшее значение должно пройти проверку.
Из примера:
Cache-Control: max-age=31536000
По возможности кэшируйте неизменные статические активы в течение длительного времени, , например, год или дольше . Сконфигурируйте инструмент сборки, чтобы встроить хэш в имена файлов статических ресурсов, чтобы каждое из них было уникальным.
Эвристика объясняется как полученная из реальной статистики, а не имеющая определенного значения:
Эта оценка включает в себя некоторые расчеты оптимальной длительности кэша для каждого ресурса, на основе совокупной статистики использования, отправленной в Chrome. Более длительная продолжительность не обязательно лучше. Проверьте источник аудита для деталей. В конечном счете, вам решать, какая оптимальная длительность кэша для ваших ресурсов.
В исходном коде вы можете увидеть, как определяется эвристика:
// Ignore assets that have very high likelihood of cache hit
const IGNORE_THRESHOLD_IN_PERCENT = 0.925;
...
const cacheHitProbability = CacheHeaders.getCacheHitProbability(cacheLifetimeInSeconds);
if (cacheHitProbability > IGNORE_THRESHOLD_IN_PERCENT) continue;
...
static getCacheHitProbability(maxAgeInSeconds) {
// This array contains the hand wavy distribution of the age of a resource in hours at the time of
// cache hit at 0th, 10th, 20th, 30th, etc percentiles.
// Example: a max-age of 12 hours already covers ~50% of cases, doubling to 24 hours covers ~10% more.
...
const RESOURCE_AGE_IN_HOURS_DECILES = [0, 0.2, 1, 3, 8, 12, 24, 48, 72, 168, 8760, Infinity];
assert.ok(RESOURCE_AGE_IN_HOURS_DECILES.length === 12, 'deciles 0-10 and 1 for overflow');
Короче говоря: я считаю, что порог составляет около трех месяцев (около max-age=8337600
), но маловероятно, что сопоставление с точным значением более полезно, чем выбор года.