it-swarm.dev

Apa nilai default kontrol-cache?

Masalah saya adalah: kadang-kadang peramban memuat terlalu banyak sumber daya meskipun saya sudah memodifikasinya. Tapi Setelah F5, semuanya baik-baik saja.

Saya mempelajari kasus ini sepanjang sore. Sekarang saya benar-benar mengerti poin "Last-Modified" atau "Cache-Control". Dan saya tahu bagaimana menyelesaikan masalah (versi .js? Atau eksplisit max-age = xxxx). Tetapi masalah masih belum terpecahkan: bagaimana browser menangani header respons tanpa "Cache-Control" seperti ini:

Content-Length: 49675
Content-Type: text/html
Last-Modified: Thu, 27 Dec 2012 03:03:50 GMT
Accept-Ranges: bytes
Etag: "0af7fcbdee3cd1:972"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Thu, 24 Jan 2013 07:46:16 GMT 

Mereka dengan jelas menyimpannya saat "Enter in the bar"

enter image description here

39
rhapsodyn

RFC 7234 merinci apa yang harus dilakukan browser dan proksi secara default:

Meskipun caching sepenuhnya merupakan fitur OPTIONAL dari HTTP, ini bisa berupa diasumsikan bahwa menggunakan kembali respons yang di-cache diinginkan dan demikian penggunaan kembali adalah perilaku default ketika tidak ada persyaratan atau lokal. konfigurasi mencegahnya. Oleh karena itu, persyaratan cache HTTP adalah berfokus pada mencegah cache dari menyimpan .__ yang tidak dapat digunakan kembali. menanggapi atau menggunakan kembali respons tersimpan secara tidak tepat, alih-alih mengamanatkan bahwa cache selalu menyimpan dan menggunakan kembali respons tertentu.

14
SilverlightFox

Caching biasanya diaktifkan secara default di browser, jadi cache-control dapat digunakan untuk menyesuaikan perilaku ini atau menonaktifkannya.

Meskipun caching sepenuhnya merupakan fitur OPTIONAL dari HTTP, dapat diasumsikan bahwa menggunakan kembali respons yang di-cache diperlukan dan bahwa penggunaan kembali tersebut adalah perilaku default ketika tidak ada persyaratan atau konfigurasi lokal yang mencegahnya. Oleh karena itu, persyaratan cache HTTP difokuskan untuk mencegah cache agar tidak menyimpan respons yang tidak dapat digunakan kembali atau menggunakan kembali respons yang disimpan secara tidak tepat, alih-alih mengamanatkan bahwa cache selalu menyimpan dan menggunakan kembali respons tertentu. [ https://tools.ietf.org/html/rfc7234#section-2]

Waktu yang dianggap peramban respons cache dalam cache biasanya relatif terhadap saat terakhir diubah:

Karena server Asal tidak selalu memberikan waktu kedaluwarsa eksplisit, cache MUNGKIN menetapkan waktu kedaluwarsa heuristik ketika waktu eksplisit tidak ditentukan, menggunakan algoritme yang menggunakan nilai-nilai bidang tajuk lainnya (seperti waktu Modifikasi Terakhir) ... Jika respons memiliki bidang tajuk yang Terakhir Dimodifikasi (Bagian 2.2 dari [RFC7232]), cache dianjurkan untuk menggunakan nilai kedaluwarsa heuristik yang tidak lebih dari sebagian kecil dari interval sejak saat itu. Pengaturan khas fraksi ini mungkin 10%. [ https://tools.ietf.org/html/rfc7234#s-4-4.2]

Posting ini memiliki rincian tentang bagaimana browser yang berbeda menghitung nilai itu.

10
Jon

Header kontrol-cache default adalah: Pribadi

Mekanisme cache dapat me-cache halaman ini dalam cache pribadi dan mengirim ulang hanya ke satu klien. Ini adalah nilai default. Sebagian besar server proxy tidak akan membuat cache halaman dengan pengaturan ini.

Silakan lihat http://msdn.Microsoft.com/en-us/library/ms524721%28v=vs.90%29.aspx

7
Stevie

Masa kesegaran dihitung berdasarkan beberapa header. Jika header "Cache-control: max-age = N" ditentukan, maka masa hidup kesegaran sama dengan N. Jika header ini tidak ada, yang sangat sering terjadi, itu diperiksa jika header Expires hadir. Jika tajuk Kedaluwarsa ada, maka nilainya minus nilai tajuk Tanggal menentukan masa pakai kesegaran. Terakhir, jika tidak ada tajuk yang ada, cari tajuk yang Terakhir Dimodifikasi. Jika tajuk ini ada, maka masa hidup kesegaran cache sama dengan nilai tajuk Tanggal dikurangi nilai tajuk yang dimodifikasi terakhir dibagi dengan 10.

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Caching_FAQ

2
kouut

Tanpa header kontrol cache, browser meminta sumber daya setiap kali ia memuat halaman (?) Baru. Menekan F5 Anda membatalkan (atau bahkan menghapus secara logis) item yang di-cache dalam halaman tersebut yang memaksa memuat ulang secara penuh dengan bertindak karena tidak ada versi lokal yang tersedia - Saya tidak yakin jika browser menghapus sumber daya tersebut dari cache sebelum meminta mereka lagi.

Bagian yang lucu adalah bahwa ada beberapa pengaturan 'tambahan' dalam beberapa browser yang menyebabkan beberapa optimisasi seperti meminta sumber daya hanya sekali pemuatan halaman. Jika Anda memiliki gambar yang berubah untuk setiap permintaan seperti penghitung, Anda hanya akan melihat satu versi gambar ini walaupun Anda menggunakannya berkali-kali.

Yang berikutnya adalah browser menggunakan kembali gambar yang tidak secara eksplisit ditetapkan sebagai nocache dengan menerapkan semacam caching lokal 'disukai'. Jika Anda ingin memiliki permintaan setiap kali Anda perlu mengaturnya untuk memvalidasi ulang dan menetapkan kedaluwarsa ke -1 atau sesuatu seperti itu.

Jadi tergantung pada sumber daya yang menentukan tidak ada yang sering memicu beberapa default yang tidak sama dengan yang Anda harapkan dari membaca spesifikasi.

Mungkin ada juga perilaku yang berbeda mengenai apakah sumber tersebut tampaknya lokal, drive atau server internet yang jauh. Katanya tidak semua browser bertindak berbeda dan saya cukup terbatas.

Yang membantu adalah memeriksa www.google.com dan mencari piksel pelacakan yang diminta halaman mereka (dua piksel 1x1 diminta dari metrics.gstats.com dengan bagian acak pada subdomain). 

Jika Anda menggunakan pembakar untuk memeriksa header Anda melihat bahwa mereka menentukan arahan nocache dengan cara apa pun yang mungkin. Header berbunyi seperti ini:

Alternate-Protocol  443:quic
Cache-Control   no-cache, must-revalidate
Content-Length  35
Content-Type    image/gif
Date    Mon, 25 Nov 2013 14:33:30 GMT
Expires Fri, 01 Jan 1990 00:00:00 GMT
Last-Modified   Tue, 14 Aug 2012 10:47:46 GMT
Pragma  no-cache
Server  sffe
X-Content-Type-Options  nosniff
X-Firefox-Spdy  3
X-XSS-Protection    1; mode=block

Coba ini sebagai pengaturan dan periksa apakah ini menyelesaikan masalah bahwa browser tidak mengambil sumber daya Anda yang berubah. Arahan yang harus divalidasi ulang akan menyebabkan cache proxy bahkan untuk meminta sumber daya setiap waktu dan memeriksa 304 balasan Tidak Dimodifikasi.

Saat ini saya mengalami hal serupa. Saya memiliki koneksi localhost pengaturan etag dan semua yang terjadi adalah bahwa cache tidak pernah bertanya. Saya tidak menetapkan informasi caching atau sama. Sendiri yang menentukan lapisan etag yang menyebabkan FireFox tidak meminta sumber daya lagi. Jadi saya mengalami sesuatu yang mirip dengan masalah Anda.

0
Martin Kersten