Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Perilaku permintaan dan respons untuk asal kustom
Untuk memahami cara CloudFront memproses permintaan dan tanggapan saat Anda menggunakan asal kustom, lihat bagian berikut:
Topik
Cara CloudFront memproses dan meneruskan permintaan ke asal kustom Anda
Pelajari cara CloudFront memproses permintaan penampil dan meneruskan permintaan ke asal kustom Anda.
Daftar Isi
- Autentikasi
- Durasi cache dan minimum TTL
- Alamat IP Klien
- Otentikasi sisi klien SSL
- Kompresi
- Permintaan bersyarat
- Cookie
- Berbagi sumber daya lintas asal () CORS
- Enkripsi
- GETpermintaan yang menyertakan badan
- HTTPmetode
- HTTPmeminta header dan CloudFront perilaku (kustom dan asal Amazon S3)
- HTTPversi
- Panjang maksimum permintaan dan panjang maksimum URL
- OCSPmenjepit
- Koneksi persisten
- Protokol
- String pertanyaan
- Waktu habis dan upaya koneksi tempat asal
- Waktu habis untuk respons asal
- Permintaan simultan untuk objek yang sama (permintaan runtuh)
- Header User-Agent
Autentikasi
Jika Anda meneruskan Authorization
header ke asal Anda, Anda kemudian dapat mengonfigurasi server asal Anda untuk meminta otentikasi klien untuk jenis permintaan berikut:
-
DELETE
-
GET
-
HEAD
-
PATCH
-
PUT
-
POST
Untuk OPTIONS
permintaan, otentikasi klien hanya dapat dikonfigurasi jika Anda menggunakan CloudFront pengaturan berikut:
-
CloudFront dikonfigurasi untuk meneruskan
Authorization
header ke asal Anda -
CloudFront dikonfigurasi untuk tidak menyimpan respons terhadap
OPTIONS
permintaan
Untuk informasi selengkapnya, lihat CloudFront Konfigurasikan untuk meneruskan Authorization header.
Anda dapat menggunakan HTTP atau HTTPS meneruskan permintaan ke server asal Anda. Untuk informasi selengkapnya, lihat Gunakan HTTPS dengan CloudFront.
Durasi cache dan minimum TTL
Untuk mengontrol berapa lama objek Anda berada dalam CloudFront cache sebelum CloudFront meneruskan permintaan lain ke asal Anda, Anda dapat:
-
Konfigurasi asal Anda untuk menambahkan
Cache-Control
atauExpires
pada setiap objek. -
Tentukan nilai untuk Minimum TTL dalam perilaku CloudFront cache.
-
Gunakan nilai default selama 24 jam.
Untuk informasi selengkapnya, lihat Kelola berapa lama konten tetap dalam cache (kedaluwarsa).
Alamat IP Klien
Jika penampil mengirim permintaan ke CloudFront dan tidak menyertakan header X-Forwarded-For
permintaan, CloudFront mendapatkan alamat IP penampil dari TCP koneksi, menambahkan X-Forwarded-For
header yang menyertakan alamat IP, dan meneruskan permintaan ke asal. Misalnya, jika CloudFront mendapat alamat IP 192.0.2.2
dari TCP koneksi, itu meneruskan header berikut ke asal:
X-Forwarded-For: 192.0.2.2
Jika penampil mengirim permintaan ke CloudFront dan menyertakan header X-Forwarded-For
permintaan, CloudFront mendapatkan alamat IP penampil dari TCP koneksi, menambahkannya ke akhir X-Forwarded-For
header, dan meneruskan permintaan ke asal. Misalnya, jika permintaan penampil menyertakan X-Forwarded-For:
192.0.2.4,192.0.2.3
dan CloudFront mendapatkan alamat IP 192.0.2.2
dari TCP koneksi, itu meneruskan header berikut ke asal:
X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2
Beberapa aplikasi, seperti load balancer (termasuk Elastic Load Balancing), firewall aplikasi web, reverse proxy, sistem pencegahan intrusi, API dan Gateway, menambahkan alamat IP server edge yang meneruskan permintaan CloudFront ke ujung header. X-Forwarded-For
Misalnya, jika CloudFront termasuk X-Forwarded-For: 192.0.2.2
dalam permintaan yang diteruskan ke ELB dan jika alamat IP server CloudFront tepi adalah 192.0.2.199, permintaan yang diterima EC2 instance Anda berisi header berikut:
X-Forwarded-For: 192.0.2.2,192.0.2.199
catatan
X-Forwarded-For
Header berisi IPv4 alamat (seperti 192.0.2.44) dan IPv6 alamat (seperti 2001:0 db 8:85 a3: :8a2e: 0370:7334).
Perhatikan juga bahwa X-Forwarded-For
header dapat dimodifikasi oleh setiap node di jalur ke server saat ini (CloudFront). Untuk informasi lebih lanjut, lihat bagian 8.1 di RFC7239
Otentikasi sisi klien SSL
CloudFront tidak mendukung otentikasi klien dengan sertifikat sisi klienSSL. Jika asal meminta sertifikat sisi klien, hapus CloudFront permintaan.
Kompresi
Untuk informasi selengkapnya, lihat Sajikan file terkompresi.
Permintaan bersyarat
Ketika CloudFront menerima permintaan untuk objek yang telah kedaluwarsa dari cache tepi, itu meneruskan permintaan ke asal baik untuk mendapatkan versi terbaru dari objek atau untuk mendapatkan konfirmasi dari asal bahwa cache CloudFront tepi sudah memiliki versi terbaru. Biasanya, ketika asal terakhir mengirim objek ke CloudFront, itu termasuk ETag
nilai, LastModified
nilai, atau kedua nilai dalam respons. Dalam permintaan baru yang CloudFront diteruskan ke asal, CloudFront tambahkan satu atau kedua hal berikut:
-
Header
If-Match
atauIf-None-Match
yang memuatETag
untuk versi objek yang kedaluwarsa. -
Header
If-Modified-Since
yang memuatLastModified
untuk versi objek yang kedaluwarsa.
Asal menggunakan informasi ini untuk menentukan apakah objek telah diperbarui dan, oleh karena itu, apakah akan mengembalikan seluruh objek ke CloudFront atau hanya mengembalikan kode status HTTP 304 (tidak dimodifikasi).
catatan
If-Modified-Since
dan permintaan If-None-Match
bersyarat tidak didukung ketika CloudFront dikonfigurasi untuk meneruskan cookie (semua atau subset).
Untuk informasi selengkapnya, lihat Konten cache berdasarkan cookie.
Cookie
Anda dapat mengonfigurasi CloudFront untuk meneruskan cookie ke asal Anda. Untuk informasi selengkapnya, lihat Konten cache berdasarkan cookie.
Berbagi sumber daya lintas asal () CORS
Jika Anda CloudFront ingin menghormati setelan berbagi sumber daya lintas asal, konfigurasikan CloudFront untuk meneruskan Origin
header ke asal Anda. Untuk informasi selengkapnya, lihat Konten cache berdasarkan header permintaan.
Enkripsi
Anda dapat meminta pemirsa HTTPS untuk mengirim permintaan ke CloudFront dan meminta CloudFront untuk meneruskan permintaan ke asal kustom Anda dengan menggunakan protokol yang digunakan oleh penampil. Untuk informasi lebih lanjut, lihat pengaturan distribusi berikut:
CloudFront meneruskan HTTPS permintaan ke server asal menggunakan protokolSSLv3, TLSv1 .0, TLSv1 .1, dan TLSv1 .2. Untuk asal kustom, Anda dapat memilih SSL protokol yang CloudFront ingin Anda gunakan saat berkomunikasi dengan asal Anda:
-
Jika Anda menggunakan CloudFront konsol, pilih protokol menggunakan kotak centang Origin SSL Protocols. Untuk informasi selengkapnya, lihat Buat distribusi.
-
Jika Anda menggunakan CloudFront API, tentukan protokol dengan menggunakan elemen.
OriginSslProtocols
Untuk informasi selengkapnya, lihat OriginSslProtocolsdan DistributionConfigdi CloudFront APIReferensi Amazon.
Jika asalnya adalah ember Amazon S3, CloudFront selalu gunakan TLSv1 .2.
penting
Versi lain dari SSL dan TLS tidak didukung.
Untuk informasi selengkapnya tentang menggunakan HTTPS with CloudFront, lihatGunakan HTTPS dengan CloudFront. Untuk daftar sandi yang CloudFront mendukung HTTPS komunikasi antara pemirsa dan CloudFront, dan antara CloudFront dan asal Anda, lihat. Protokol dan cipher yang didukung antara pemirsa dan CloudFront
GETpermintaan yang menyertakan badan
Jika GET
permintaan penampil menyertakan isi, CloudFront mengembalikan kode HTTP status 403 (Terlarang) ke penampil.
HTTPmetode
Jika Anda mengonfigurasi CloudFront untuk memproses semua HTTP metode yang didukungnya, CloudFront terima permintaan berikut dari pemirsa dan teruskan ke asal kustom Anda:
-
DELETE
-
GET
-
HEAD
-
OPTIONS
-
PATCH
-
POST
-
PUT
CloudFront selalu menyimpan respons GET
dan HEAD
permintaan. Anda juga dapat CloudFront mengonfigurasi respons cache terhadap OPTIONS
permintaan. CloudFront tidak menyimpan respons terhadap permintaan yang menggunakan metode lain.
Untuk informasi tentang konfigurasi apakah asal kustom Anda memproses metode ini, lihat dokumentasi untuk asal Anda.
penting
Jika Anda mengonfigurasi CloudFront untuk menerima dan meneruskan ke asal Anda semua HTTP metode yang CloudFront mendukung, konfigurasikan server asal Anda untuk menangani semua metode. Misalnya, jika Anda mengonfigurasi CloudFront untuk menerima dan meneruskan metode ini karena ingin digunakanPOST
, Anda harus mengonfigurasi server asal Anda untuk menangani DELETE
permintaan dengan tepat sehingga pemirsa tidak dapat menghapus sumber daya yang tidak Anda inginkan. Untuk informasi selengkapnya, lihat dokumentasi untuk HTTP server Anda.
HTTPmeminta header dan CloudFront perilaku (kustom dan asal Amazon S3)
Tabel berikut mencantumkan header HTTP permintaan yang dapat Anda teruskan ke asal kustom dan Amazon S3 (dengan pengecualian yang dicatat). Untuk setiap header, tabel mencakup informasi tentang hal berikut:
-
CloudFront perilaku jika Anda tidak mengonfigurasi CloudFront untuk meneruskan header ke asal Anda, yang CloudFront menyebabkan cache objek Anda berdasarkan nilai header.
-
Apakah Anda dapat CloudFront mengonfigurasi objek cache berdasarkan nilai header untuk header itu.
Anda dapat CloudFront mengonfigurasi objek cache berdasarkan nilai di
User-Agent
headerDate
dan, tetapi kami tidak merekomendasikannya. Header ini memiliki banyak nilai yang mungkin, dan caching berdasarkan nilainya akan menyebabkan CloudFront untuk meneruskan lebih banyak permintaan secara signifikan ke asal Anda.
Untuk informasi lebih lanjut tentang caching berdasarkan nilai header, lihat Konten cache berdasarkan header permintaan.
Header | Perilaku jika Anda tidak mengonfigurasi CloudFront ke cache berdasarkan nilai header | Caching berdasarkan nilai header didukung |
---|---|---|
Header yang ditetapkan lainnya |
Pengaturan cache lama — CloudFront meneruskan header ke asal Anda. |
Ya |
|
CloudFront menghapus header. |
Ya |
|
CloudFront menghapus header. |
Ya |
|
Jika nilainya berisi Untuk informasi selengkapnya, silakan lihat Dukungan kompresi dan Sajikan file terkompresi. |
Ya |
|
CloudFront menghapus header. |
Ya |
|
|
Ya |
|
CloudFront meneruskan header ke asal Anda. |
Tidak |
|
CloudFront tidak menambahkan header sebelum meneruskan permintaan ke asal Anda. Untuk informasi selengkapnya, lihat Konfigurasikan caching berdasarkan protokol permintaan. |
Ya |
|
CloudFront tidak menambahkan header sebelum meneruskan permintaan ke asal Anda. Untuk informasi selengkapnya, lihat Konfigurasikan caching berdasarkan jenis perangkat. |
Ya |
|
CloudFront tidak menambahkan header sebelum meneruskan permintaan ke asal Anda. Untuk informasi selengkapnya, lihat Konfigurasikan caching berdasarkan jenis perangkat. |
Ya |
|
CloudFront tidak menambahkan header sebelum meneruskan permintaan ke asal Anda. Untuk informasi selengkapnya, lihat Konfigurasikan caching berdasarkan jenis perangkat. |
Ya |
|
CloudFront tidak menambahkan header sebelum meneruskan permintaan ke asal Anda. |
Ya |
|
CloudFront menggantikan header ini dengan |
Tidak |
|
CloudFront meneruskan header ke asal Anda. |
Tidak |
|
CloudFront meneruskan header ke asal Anda. |
Ya |
|
CloudFront meneruskan header ke asal Anda. |
Ya |
|
Jika Anda mengonfigurasi CloudFront untuk meneruskan cookie, itu akan meneruskan bidang |
Tidak |
|
CloudFront meneruskan header ke asal Anda. |
Ya, tetapi tidak disarankan |
|
CloudFront menghapus header. |
Ya |
|
CloudFront meneruskan header ke asal Anda. |
Ya |
|
CloudFront menetapkan nilai ke nama domain asal yang terkait dengan objek yang diminta. Anda tidak dapat melakukan cache berdasarkan header Host untuk Amazon S3 atau MediaStore asal. |
Ya (sesuai aturan) Tidak (S3 dan MediaStore) |
|
CloudFront meneruskan header ke asal Anda. |
Ya |
|
CloudFront meneruskan header ke asal Anda. |
Ya |
|
CloudFront meneruskan header ke asal Anda. |
Ya |
|
CloudFront meneruskan header ke asal Anda. |
Ya |
|
CloudFront meneruskan header ke asal Anda. |
Ya |
|
CloudFront meneruskan header ke asal Anda. |
Tidak |
|
CloudFront meneruskan header ke asal Anda. |
Ya |
|
CloudFront meneruskan header ke asal Anda. |
Tidak |
|
CloudFront menghapus header. |
Tidak |
|
CloudFront menghapus header. |
Tidak |
|
CloudFront menghapus header. |
Tidak |
|
CloudFront meneruskan header ke asal Anda. Untuk informasi selengkapnya, lihat Bagaimana CloudFront memproses permintaan sebagian untuk suatu objek (rentangGETs). |
Ya, secara default |
|
CloudFront menghapus header. |
Ya |
|
CloudFront meneruskan header ke asal Anda. |
Tidak |
|
CloudFront menghapus header. |
Tidak |
|
CloudFront menghapus header. |
Tidak |
|
CloudFront meneruskan header ke asal Anda. |
Tidak |
|
CloudFront menghapus header, kecuali Anda telah membuat WebSocket koneksi. |
Tidak (kecuali untuk WebSocket koneksi) |
|
CloudFront menggantikan nilai bidang header ini dengan |
Ya, tetapi tidak disarankan |
|
CloudFront meneruskan header ke asal Anda. |
Ya |
|
CloudFront meneruskan header ke asal Anda. |
Ya |
|
CloudFront menambahkan header ke permintaan penampil sebelum meneruskan permintaan ke asal Anda. Nilai header berisi string terenkripsi yang secara unik mengidentifikasi permintaan. |
Tidak |
|
CloudFront menghapus semua |
Tidak |
|
CloudFront meneruskan header ke asal Anda. Untuk informasi selengkapnya, lihat Alamat IP Klien. |
Ya |
|
CloudFront menghapus header. |
Tidak |
|
CloudFront menghapus header. |
Ya |
|
CloudFront menghapus header. |
Tidak |
HTTPversi
CloudFront meneruskan permintaan ke asal kustom Anda menggunakan /1.1. HTTP
Panjang maksimum permintaan dan panjang maksimum URL
Lama maksimum permintaan, termasuk alur, string query (jika ada), dan header, adalah 20.480 byte.
CloudFront membangun a URL dari permintaan. Panjang maksimum ini URL adalah 8192 byte.
Jika permintaan atau URL melebihi maksimum ini, CloudFront mengembalikan kode HTTP status 413, Permintaan Entitas Terlalu Besar, ke penampil, dan kemudian menghentikan TCP koneksi ke penampil.
OCSPmenjepit
Ketika penampil mengirimkan HTTPS permintaan untuk objek, salah satu CloudFront atau penampil harus mengonfirmasi dengan otoritas sertifikat (CA) bahwa SSL sertifikat untuk domain belum dicabut. OCSPstapling mempercepat validasi sertifikat dengan memungkinkan CloudFront untuk memvalidasi sertifikat dan menyimpan respons dari CA, sehingga klien tidak perlu memvalidasi sertifikat secara langsung dengan CA.
Peningkatan kinerja OCSP stapling lebih terasa ketika CloudFront menerima banyak HTTPS permintaan untuk objek dalam domain yang sama. Setiap server di lokasi CloudFront tepi harus mengirimkan permintaan validasi terpisah. Ketika CloudFront menerima banyak HTTPS permintaan untuk domain yang sama, setiap server di lokasi edge segera memiliki respons dari CA yang dapat “menjepit” ke paket dalam SSL jabat tangan; ketika pemirsa puas bahwa sertifikat valid, CloudFront dapat melayani objek yang diminta. Jika distribusi Anda tidak mendapatkan banyak lalu lintas di lokasi CloudFront tepi, permintaan baru lebih mungkin diarahkan ke server yang belum memvalidasi sertifikat dengan CA. Dalam hal ini, penampil secara terpisah melakukan langkah validasi dan CloudFront server melayani objek. CloudFront Server itu juga mengirimkan permintaan validasi ke CA, jadi lain kali menerima permintaan yang menyertakan nama domain yang sama, ia memiliki respons validasi dari CA.
Koneksi persisten
Ketika CloudFront mendapat respons dari asal Anda, ia mencoba mempertahankan koneksi selama beberapa detik jika permintaan lain tiba selama periode itu. Mempertahankan koneksi persisten menghemat waktu yang diperlukan untuk membangun kembali TCP koneksi dan melakukan TLS jabat tangan lain untuk permintaan berikutnya.
Untuk informasi lebih lanjut, termasuk cara mengonfigurasi durasi koneksi persisten, lihat Keep-alive timeout (hanya asal kustom) di bagian Referensi pengaturan distribusi.
Protokol
CloudFront meneruskan HTTP atau HTTPS meminta ke server asal berdasarkan hal berikut:
-
Protokol permintaan yang dikirimkan oleh pemirsa CloudFront, salah satu HTTP atauHTTPS.
-
Nilai bidang Kebijakan Protokol Asal di CloudFront konsol atau, jika Anda menggunakan CloudFront API,
OriginProtocolPolicy
elemen dalam tipeDistributionConfig
kompleks. Di CloudFront konsol, opsinya adalah HTTPOnly, HTTPSOnly, dan Match Viewer.
Jika Anda menentukan HTTPHanya atau HTTPSHanya, CloudFront teruskan permintaan ke server asal menggunakan protokol yang ditentukan, terlepas dari protokol dalam permintaan penampil.
Jika Anda menentukan Penampil Pencocokan, CloudFront teruskan permintaan ke server asal menggunakan protokol dalam permintaan penampil. Perhatikan bahwa CloudFront cache objek hanya sekali meskipun pemirsa membuat permintaan menggunakan keduanya HTTP dan HTTPS protokol.
penting
Jika CloudFront meneruskan permintaan ke asal menggunakan HTTPS protokol, dan jika server asal mengembalikan sertifikat yang tidak valid atau sertifikat yang ditandatangani sendiri, CloudFront lepaskan koneksi. TCP
Untuk informasi tentang cara memperbarui distribusi menggunakan CloudFront konsol, lihatPerbarui distribusi. Untuk informasi tentang cara memperbarui distribusi menggunakan CloudFront API, buka UpdateDistributiondi CloudFront APIReferensi Amazon.
String pertanyaan
Anda dapat mengonfigurasi apakah CloudFront meneruskan parameter string kueri ke asal Anda. Untuk informasi selengkapnya, lihat Konten cache berdasarkan parameter string kueri.
Waktu habis dan upaya koneksi tempat asal
Batas waktu koneksi asal adalah jumlah detik yang CloudFront menunggu ketika mencoba membuat koneksi ke asal.
Upaya koneksi asal adalah berapa kali CloudFront upaya untuk terhubung ke asal.
Bersama-sama, pengaturan ini menentukan berapa lama CloudFront mencoba untuk terhubung ke asal sebelum gagal ke asal sekunder (dalam kasus grup asal) atau mengembalikan respons kesalahan ke penampil. Secara default, CloudFront tunggu selama 30 detik (3 upaya masing-masing 10 detik) sebelum mencoba terhubung ke asal sekunder atau mengembalikan respons kesalahan. Anda dapat mengurangi waktu ini dengan menentukan waktu koneksi yang lebih singkat, lebih sedikit percobaan, atau keduanya.
Untuk informasi selengkapnya, lihat Kontrol batas waktu dan upaya asal.
Waktu habis untuk respons asal
waktu habis respons asal, juga dikenal sebagai waktu habis baca asal atau waktu habis permintaan asal, berlaku untuk kedua hal berikut:
-
Jumlah waktu, dalam hitungan detik, yang CloudFront menunggu respons setelah meneruskan permintaan ke asal.
-
Jumlah waktu, dalam hitungan detik, yang CloudFront menunggu setelah menerima paket respons dari asal dan sebelum menerima paket berikutnya.
CloudFront perilaku tergantung pada HTTP metode permintaan pemirsa:
-
GET
danHEAD
permintaan - Jika asal tidak merespons atau berhenti merespons dalam durasi waktu tunggu respons, hentikan CloudFront koneksi. Jika jumlah upaya koneksi asal yang ditentukan lebih dari 1, CloudFront coba lagi untuk mendapatkan respons lengkap. CloudFront mencoba hingga 3 kali, sebagaimana ditentukan oleh nilai pengaturan upaya koneksi asal. Jika asal tidak merespons selama upaya terakhir, CloudFront jangan coba lagi sampai menerima permintaan lain untuk konten pada asal yang sama. -
DELETE
,OPTIONS
,PATCH
PUT
,, danPOST
permintaan — Jika asal tidak merespons dalam 30 detik CloudFront , lepaskan koneksi dan tidak mencoba lagi untuk menghubungi asal. Klien dapat mengirim ulang permintaan bilamana perlu.
Untuk informasi lebih lanjut, termasuk cara mengonfigurasi waktu habis respons asal, lihat Batas waktu respons (hanya asal khusus).
Permintaan simultan untuk objek yang sama (permintaan runtuh)
Ketika lokasi CloudFront tepi menerima permintaan untuk objek dan objek tidak dalam cache atau objek yang di-cache kedaluwarsa, CloudFront segera kirim permintaan ke asal. Namun, jika ada permintaan simultan untuk objek yang sama—yaitu, jika permintaan tambahan untuk objek yang sama (dengan kunci cache yang sama) tiba di lokasi tepi sebelum CloudFront menerima respons terhadap permintaan pertama— CloudFront berhenti sebelum meneruskan permintaan tambahan ke asal. Jeda singkat ini membantu mengurangi beban pada titik asal. CloudFront mengirimkan respons dari permintaan asli ke semua permintaan yang diterimanya saat dijeda. Ini disebut permintaan runtuh. Dalam CloudFront log, permintaan pertama diidentifikasi sebagai Miss
di x-edge-result-type
bidang, dan permintaan yang diciutkan diidentifikasi sebagai aHit
. Untuk informasi selengkapnya tentang CloudFront log, lihatCloudFront dan logging fungsi tepi.
CloudFront hanya menciutkan permintaan yang berbagi kunci cache. Jika permintaan tambahan tidak berbagi kunci cache yang sama karena, misalnya, Anda CloudFront mengonfigurasi cache berdasarkan header permintaan atau cookie atau string kueri, CloudFront teruskan semua permintaan dengan kunci cache unik ke asal Anda.
Jika Anda ingin mencegah semua permintaan runtuh, Anda dapat menggunakan kebijakan cache terkelolaCachingDisabled
, yang juga mencegah caching. Untuk informasi selengkapnya, lihat Gunakan kebijakan cache terkelola.
Jika Anda ingin mencegah keruntuhan permintaan untuk objek tertentu, Anda dapat mengatur minimum TTL untuk perilaku cache ke 0 dan mengonfigurasi asal untuk mengirimCache-Control:
private
,,Cache-Control: no-store
, Cache-Control:
no-cache
Cache-Control: max-age=0
, atauCache-Control: s-maxage=0
. Konfigurasi ini akan meningkatkan beban pada asal Anda dan memperkenalkan latensi tambahan untuk permintaan simultan yang dijeda sementara CloudFront menunggu respons terhadap permintaan pertama.
penting
Saat ini, CloudFront tidak mendukung keruntuhan permintaan jika Anda mengaktifkan penerusan cookie dalam kebijakan cache, kebijakan permintaan asal, atau pengaturan cache lama.
Header User-Agent
Jika Anda CloudFront ingin menyimpan versi objek yang berbeda berdasarkan perangkat yang digunakan pengguna untuk melihat konten Anda, kami sarankan Anda mengonfigurasi CloudFront untuk meneruskan satu atau beberapa header berikut ke asal kustom Anda:
-
CloudFront-Is-Desktop-Viewer
-
CloudFront-Is-Mobile-Viewer
-
CloudFront-Is-SmartTV-Viewer
-
CloudFront-Is-Tablet-Viewer
Berdasarkan nilai User-Agent
header, CloudFront tetapkan nilai header ini ke true
atau false
sebelum meneruskan permintaan ke asal Anda. Jika perangkat termasuk dalam lebih dari satu kategori, lebih dari satu nilai mungkin true
. Misalnya, untuk beberapa perangkat tablet, CloudFront mungkin mengatur keduanya CloudFront-Is-Mobile-Viewer
dan CloudFront-Is-Tablet-Viewer
ketrue
. Untuk informasi selengkapnya tentang CloudFront mengonfigurasi cache berdasarkan header permintaan, lihat. Konten cache berdasarkan header permintaan
Anda dapat CloudFront mengonfigurasi objek cache berdasarkan nilai di User-Agent
header, tetapi kami tidak merekomendasikannya. User-Agent
Header memiliki banyak nilai yang mungkin, dan caching berdasarkan nilai-nilai tersebut akan menyebabkan CloudFront untuk meneruskan lebih banyak permintaan secara signifikan ke asal Anda.
Jika Anda tidak CloudFront mengonfigurasi objek cache berdasarkan nilai di User-Agent
header, CloudFront tambahkan User-Agent
header dengan nilai berikut sebelum meneruskan permintaan ke asal Anda:
User-Agent = Amazon CloudFront
CloudFront menambahkan header ini terlepas dari apakah permintaan dari penampil menyertakan User-Agent
header. Jika permintaan dari penampil menyertakan User-Agent
header, CloudFront hapus itu.
Bagaimana CloudFront memproses tanggapan dari asal kustom Anda
Pelajari cara CloudFront memproses respons dari asal kustom Anda.
Daftar Isi
100 Continue
tanggapan
Asal Anda tidak dapat mengirim lebih dari satu respons 100-Lanjutkan ke CloudFront. Setelah respons 100-Continue pertama, CloudFront mengharapkan respons HTTP 200 OK. Jika asal Anda mengirimkan respons 100-Lanjutkan lagi setelah yang pertama, CloudFront akan mengembalikan kesalahan.
Pembuatan cache
-
Pastikan server asal menetapkan nilai yang valid dan akurat untuk
Date
danLast-Modified
bidang header. -
CloudFront biasanya menghormati
Cache-Control: no-cache
header dalam respons dari asal. Untuk pengecualian, lihat Permintaan simultan untuk objek yang sama (permintaan runtuh).
Permintaan dibatalkan
Jika suatu objek tidak berada di cache tepi, dan jika penampil mengakhiri sesi (misalnya, menutup browser) setelah CloudFront mendapatkan objek dari asal Anda tetapi sebelum dapat mengirimkan objek yang diminta, CloudFront tidak men-cache objek di lokasi tepi.
Negosiasi konten
Jika asal Anda kembali Vary:*
dalam respons, dan jika nilai Minimum TTL untuk perilaku cache yang sesuai adalah 0, CloudFront cache objek tetapi masih meneruskan setiap permintaan berikutnya untuk objek ke asal untuk mengonfirmasi bahwa cache berisi versi terbaru dari objek. CloudFront tidak termasuk header bersyarat, seperti If-None-Match
atau. If-Modified-Since
Akibatnya, asal Anda mengembalikan objek sebagai CloudFront respons terhadap setiap permintaan.
Jika asal Anda kembali Vary:*
dalam respons, dan jika nilai Minimum TTL untuk perilaku cache yang sesuai adalah nilai lainnya, CloudFront proses Vary
header seperti yang dijelaskan dalamHTTPheader respon yang CloudFront menghapus atau menggantikan.
Cookie
Jika Anda mengaktifkan cookie untuk perilaku cache, dan jika asal mengembalikan cookie dengan objek, CloudFront cache objek dan cookie. Perhatikan bahwa ini mengurangi kemungkinan cache untuk sebuah objek. Untuk informasi selengkapnya, lihat Konten cache berdasarkan cookie.
TCPKoneksi terputus
Jika TCP koneksi antara CloudFront dan asal Anda turun saat asal Anda mengembalikan objek CloudFront, CloudFront perilaku tergantung pada apakah asal Anda menyertakan Content-Length
header dalam respons:
-
Header Content-Length - CloudFront mengembalikan objek ke penampil karena mendapatkan objek dari asal Anda. Namun, jika nilai
Content-Length
header tidak sesuai dengan ukuran objek, objek CloudFront tidak disimpan dalam cache. -
Transfer-Encoding: Chunked — CloudFront mengembalikan objek ke penampil karena mendapatkan objek dari asal Anda. Namun, jika respon chunked tidak lengkap, CloudFront tidak cache objek.
-
Tanpa header Content-Length — CloudFront mengembalikan objek ke penampil dan menyimpannya di cache, tetapi objek mungkin tidak lengkap. Tanpa
Content-Length
header, CloudFront tidak dapat menentukan apakah TCP koneksi terputus secara tidak sengaja atau sengaja.
Kami menyarankan Anda mengonfigurasi HTTP server Anda untuk menambahkan Content-Length
header untuk CloudFront mencegah caching objek sebagian.
HTTPheader respon yang CloudFront menghapus atau menggantikan
CloudFront menghapus atau memperbarui bidang header berikut sebelum meneruskan respons dari asal Anda ke penampil:
-
Set-Cookie
— Jika Anda mengonfigurasi CloudFront untuk meneruskan cookie, itu akan meneruskan bidangSet-Cookie
header ke klien. Untuk informasi selengkapnya, lihat Konten cache berdasarkan cookie. -
Trailer
-
Transfer-Encoding
— Jika asal Anda mengembalikan bidang header ini, CloudFront tetapkan nilainyachunked
sebelum mengembalikan respons ke penampil. -
Upgrade
-
Vary
– Catat hal berikut:-
Jika Anda mengonfigurasi CloudFront untuk meneruskan header khusus perangkat ke origin (
CloudFront-Is-Desktop-Viewer
,,CloudFront-Is-Mobile-Viewer
,CloudFront-Is-Tablet-Viewer
) dan mengonfigurasi asal Anda untuk kembaliCloudFront-Is-SmartTV-Viewer
, kembaliVary:User-Agent
ke CloudFront penampil CloudFront.Vary:User-Agent
Untuk informasi selengkapnya, lihat Konfigurasikan caching berdasarkan jenis perangkat. -
Jika Anda mengonfigurasi asal Anda untuk menyertakan salah satu
Accept-Encoding
atauCookie
diVary
header, CloudFront sertakan nilai dalam respons terhadap penampil. -
Jika Anda mengonfigurasi CloudFront untuk meneruskan header ke asal Anda, dan jika Anda mengonfigurasi asal Anda untuk mengembalikan nama header ke CloudFront
Vary
header (misalnya,Vary:Accept-Charset,Accept-Language
), CloudFront mengembalikanVary
header dengan nilai-nilai tersebut ke penampil. -
Untuk informasi tentang cara CloudFront memproses nilai
*
diVary
header, lihatNegosiasi konten. -
Jika Anda mengonfigurasi asal Anda untuk menyertakan nilai lain di
Vary
header, CloudFront hapus nilai sebelum mengembalikan respons ke penampil.
-
-
Via
— CloudFront menetapkan nilai sebagai berikut dalam respons terhadap penampil:Via:
http-version
alphanumeric-string
.cloudfront.net (CloudFront)
Misalnya, nilainya adalah seperti berikut:
Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)
Ukuran file cache maksimum
Ukuran maksimum badan respons yang CloudFront menyimpan dalam cache-nya adalah 50 GB. Ini termasuk respons transfer yang dipotong yang tidak menyebutkan nilai header Content-Length
.
Anda dapat CloudFront menggunakan cache objek yang lebih besar dari ukuran ini dengan menggunakan permintaan rentang untuk meminta objek di bagian yang masing-masing 50 GB atau lebih kecil. CloudFrontcache bagian-bagian ini karena masing-masing dari mereka adalah 50 GB atau lebih kecil. Setelah penampil mengambil semua bagian objek, ia dapat merekonstruksi objek asli yang lebih besar. Untuk informasi selengkapnya, lihat Gunakan permintaan rentang untuk menyimpan objek besar.
Tempat asal tidak tersedia
Jika server asal Anda tidak tersedia dan CloudFront mendapat permintaan untuk objek yang ada di cache tepi tetapi telah kedaluwarsa (misalnya, karena periode waktu yang ditentukan dalam Cache-Control max-age
arahan telah berlalu), CloudFront baik menyajikan versi kedaluwarsa objek atau menyajikan halaman kesalahan khusus. Untuk informasi selengkapnya tentang CloudFront perilaku saat Anda mengonfigurasi halaman kesalahan kustom, lihatBagaimana CloudFront proses kesalahan ketika Anda telah mengkonfigurasi halaman kesalahan kustom.
Dalam beberapa kasus, objek yang jarang diminta diusir dan tidak lagi tersedia di cache tepi. CloudFront tidak dapat melayani objek yang telah diusir.
Mengalihkan
Jika Anda mengubah lokasi objek di server asal, Anda dapat mengonfigurasi server web Anda untuk mengalihkan permintaan ke lokasi baru. Setelah Anda mengonfigurasi pengalihan, pertama kali penampil mengirimkan permintaan untuk objek, CloudFront mengirim permintaan ke asal, dan asal merespons dengan pengalihan (misalnya,). 302 Moved Temporarily
CloudFront cache pengalihan dan mengembalikannya ke penampil. CloudFront tidak mengikuti pengalihan.
Anda dapat mengonfigurasi server web untuk mengalihkan permintaan ke salah satu lokasi berikut:
-
URLObjek baru di server asal. Saat pemirsa mengikuti pengalihan ke yang baruURL, pemirsa mem-bypass CloudFront dan langsung menuju ke asal. Akibatnya, kami menyarankan Anda untuk tidak mengalihkan permintaan ke URL objek baru di asal.
-
Yang baru CloudFront URL untuk objek. Saat penampil mengirimkan permintaan yang berisi yang baru CloudFront URL, CloudFront dapatkan objek dari lokasi baru di asal Anda, menyimpannya di lokasi tepi, dan mengembalikan objek ke penampil. Permintaan berikutnya atas objek tersebut akan dilayani oleh lokasi edge. Ini menghindari latensi dan beban yang terkait dengan penampil yang meminta objek dari asal. Namun, setiap permintaan baru untuk objek akan dikenakan biaya untuk dua permintaan. CloudFront
Header Transfer-Encoding
CloudFront hanya mendukung chunked
nilai Transfer-Encoding
header. Jika asal Anda kembaliTransfer-Encoding: chunked
, CloudFront mengembalikan objek ke klien sebagai objek diterima di lokasi tepi, dan cache objek dalam format chunked untuk permintaan berikutnya.
Jika penampil membuat Range GET
permintaan dan asal kembaliTransfer-Encoding: chunked
, CloudFront mengembalikan seluruh objek ke penampil, bukan rentang yang diminta.
Kami sarankan Anda menggunakan pengkodean bertahap jika panjang konten tanggapan Anda tidak dapat ditentukan sebelumnya. Untuk informasi selengkapnya, lihat TCPKoneksi terputus.