Я потрапив на кілька сторінок у Google, де ви можете встановити заголовка в S3 для окремих об’єктів. Це дійсно не продуктивний спосіб зробити це спеціально, оскільки в моєму випадку ми говоримо про декілька об'єктів.
Ну, "продуктивний" чи ні, саме так він і насправді покликаний працювати.
CloudFront не додає Cache-Control:
заголовків.
CloudFront проходить наскрізний (а також відносини, якщо іншої не налаштоване) в Cache-Control:
заголовках , що надається сервер походження, який в даному випадку є S3.
Щоб отримати Cache-Control:
заголовки, надані S3 під час отримання об’єкта, вони повинні бути надані, коли об’єкт завантажений у S3, або доданий до метаданих об'єкта шляхом подальшої операції put + copy, яку можна використовувати для внутрішньої копіювання об'єкта в себе в S3, змінюючи метадані в процесі. Це те, що робить консоль поза кадром, якщо ви редагуєте метадані об’єкта.
Також у випадку, якщо вам цікаво, у S3 немає глобальної настройки, щоб змусити всі об’єкти у відрі повертати ці заголовки - це атрибут per-object.
Оновлення: Lambda @ Edge - це нова функція в CloudFront, яка дозволяє запускати тригери проти запитів та / або відповідей, між переглядачем і кешем та / або кешем та початком, запущеним кодом, записаним у Node.js, проти простої структури запиту / відповіді піддаються CloudFront.
Одне з головних застосувань для цієї функції - це маніпулювання заголовками ... тому поки вищевикладене все ще точно - CloudFront сам не додає Cache-Control
- тепер функція Lambda може додавати їх до відповіді, що повертається з CloudFront.
Цей приклад додається, Cache-Control: public, max-age=86400
лише якщо у відповіді вже немає Cache-Control
заголовка.
Використання цього коду в тригері відповіді про вихід може призвести до того, що він запускається кожного разу, коли CloudFront отримує об'єкт із джерела, та змінює відповідь, перш ніж CloudFront кешуватиме його.
'use strict';
exports.handler = (event, context, callback) => {
const response = event.Records[0].cf.response;
if(!response.headers['cache-control'])
{
response.headers['cache-control'] = [{
key: 'Cache-Control',
value: 'public, max-age=86400'
}];
}
callback(null, response);
};
Оновлення (2018-06-20): Нещодавно я подав запит функції в команді CloudFront дозволити конфігурацію статичного походження відгуку заголовків як атрибути походження, подібно до того, як статичні запиту заголовки можуть бути додані, тепер ... але з скручувати, дозволяючи конфігурувати кожен заголовок умовно (лише якщо джерело не вказало цей заголовок у відповіді) або безумовно (додавання заголовка та перезапис заголовка з тодішнього джерела, якщо воно є).
Що стосується запитів на функції, ви, як правило, не отримуєте ніякого підтвердження того, чи дійсно вони розглядають можливість впровадження нової функції ... або навіть, можливо, вони вже працювали над нею ... це просто оголошується, коли вони будуть виконані. Отже, я не маю уявлення, чи вони будуть реалізовані. Слід аргументувати, що оскільки ця можливість вже доступна через Lambda @ Edge, в її базовій функціональності немає необхідності ... але мій зустрічний аргумент полягає в тому, що база функціонально не є повноцінною без можливості виконайте просту маніпуляцію із заголовком статичної відповіді, і якщо це єдина причина, коли потрібен тригер, то вимагати тригерів Lambda - це непотрібна вартість, фінансово та з додатковою затримкою (навіть якщо це не обов'язково є чудовими витратами).