Почему мои значения контроля кэша отличаются между вызовами curl с / без флага "--compressed"? - PullRequest
0 голосов
/ 04 июня 2019

У меня очень предварительное понимание заголовков, кеширования и керлингов в целом, не говоря уже о Cloudfront / S3 и что они делают - так что, извините, если в итоге это не имеет никакого смысла.

В настоящее время у нас есть скрипт Lambda Edge с originResponse для установки значений max-age для управления кэшем. Он использует переключатель с делами для типа контента, чтобы назначать различные значения на основе этого, и по умолчанию, если пропущены все дела.

Когда я пытаюсь использовать контент curl -I, он вернется с ожидаемым максимальным возрастом, но при использовании curl -I --compressed или просто проверке в браузере все будет показано вместо значения по умолчанию для коммутатора.

Мне кажется, я понимаю, что это связано со сжатием, но это так же, как и я, и я совершенно заблудился, как решить эту проблему иначе.

Заголовки запроса имеют accept-encoding: gzip, ..., но ни у одного содержимого нет заголовка ответа content-encoding: gzip. Я не знаю, будет ли Cloudfront автоматически устанавливать этот заголовок сам, если это уместно, и, если это так, может ли контент быть «сжат» в другом формате, кроме gzip? Будет ли отсутствие заголовка content-encoding вызвать странность? Связано ли это даже с моей проблемой?

Прямо сейчас, я хочу еще раз извиниться за то, как мало смысла может иметь этот вопрос, есть несколько уровней того, как работает сайт, плюс я не уверен, где находится линия с NDA поверх моего собственная путаница.

Заголовок действительно мой вопрос вкратце. Я пытаюсь выяснить, как сделать так, чтобы при вызовах --compressed показывался тот же максимальный возраст, что и без.

Редактировать : В настоящее время также существует проблема S3 (?), Присваивающей MIME-типам содержимого binary/octet-stream таким вещам, как шрифты .woff2, над которыми я также работаю. Я не могу сказать, насколько связаны эти проблемы, и, может быть, переназначенные типы или реструктуризация объектов (если это так?) Вызывают сбой коммутатора. Тем не менее, типы контента в исходном вопросе показывают, что ожидается, поэтому я понятия не имею, почему он соответствует стандартному.

if (headers['content-type'] && undefined === headers['cache-control']) {
switch (headers['content-type'][0].value) {
  case 'image/jpg':
    setHeader('Cache-Control', 'public, max-age=2592000') // ← "curl -I" shows this
    break
  ...
  default:
    setHeader('Cache-Control', 'public, max-age=3600') // ← "curl -I --compressed" shows this
    break

Редактировать 2 : Я первоначально разместил этот вопрос на reddit , чтобы немного больше узнать о комментариях.

...