Expires ve Cache-Control başlıkları arasındaki fark nedir?


Yanıtlar:


130

Cache-ControlHTTP / 1.1'de tanıtıldı ve daha fazla seçenek sunuyor Expires. Aynı şeyi başarmak için kullanılabilirler, ancak için veri değeri Expiresbir HTTP tarihidir, oysa Cache-Controlmaks. Yaş göreli bir süre belirlemenize izin verir, böylece "sayfa istendikten X saat sonra" belirtebilirsiniz.

HTML Önbellek kontrolü çok benzer bir sorudur ve sorularınızın çoğuna cevap vermesi gereken bir önbellek eğitimine iyi bir bağlantısı vardır (örneğin, http://www.mnot.net/cache_docs/#EXPIRES ). Özetlemek gerekirse, Expiresgörüntüler gibi statik kaynaklar ve Cache-Controlönbelleklemenin nasıl yapıldığı üzerinde daha fazla kontrole ihtiyacınız olduğunda önerilir .


8
Önbellek kontrolünün tüm tarayıcıların kullanacağı şey olduğunu belirtmeye değer, ancak yolun eski proxy'leri olması durumunda her iki başlığı da belirtmek yararlıdır.
Nacho Coloma

3
Önbellek başlıklarının doğru kullanılıp kullanılmadığını kontrol etmek için redbot.org hizmetini (ayrıca yukarıdaki yanıtta belirtilen önbellekleme makalesini yazan Mark Nottingham tarafından da ) kullanın.
daxim

35
Ayrıca: "Hem Önbellek Denetimi hem de Son Kullanma Tarihi mevcut olduğunda Önbellek Denetimi öncelik kazanır." - mnot.net/cache_docs/
KFunk

35

CDN (Bulut Dağıtım Ağı) kullanıyorsanız, saniyeler içinde maksimum yaşta Cache-Control kullanmanızı öneririz. Örneğin Önbellek Kontrolü: maks. Yaş = 604800. Bu, başlangıç ​​sunucunuza istek tepelerini önler: "Geçerlilik Sonu Çar, 30 Eki 20xx 04:37:07 GMT" ile tüm tarayıcılar aynı anda sizden istekte bulunur.


22
Apache (ve muhtemelen birçok sunucu) genellikle, dosyanın istendiği zamanı + belirttiğiniz zaman aşımını kullanarak son kullanma tarihini ayarlar. Bu tarih saniye kullandığından, senaryonuz çok olası değildir ve davranışla aynıdır cache-control. Bu yüzden neden kullanırken istek zirveleri olacağını anlamıyorumExpires:
hilnius

19

Bu Google Developers makalesine göre, HTTP Önbelleğe Alma :

Önbellek Denetimi üstbilgisi, HTTP / 1.1 belirtiminin bir parçası olarak tanımlandı ve yanıt önbelleğe alma ilkelerini tanımlamak için kullanılan önceki üstbilgilerin (ör. Geçerlilik Süresi) yerini alıyor. Tüm modern tarayıcılar Önbellek Kontrolünü destekler, bu yüzden ihtiyacımız olan her şey budur.


Tüm modern tarayıcılar bunu desteklemekle kalmaz, aynı zamanda spesifikasyonda olduğu gibi: "Bir yanıt hem Expires üstbilgisini hem de max-age yönergesini içeriyorsa, max-age yönergesi Expires üstbilgisini geçersiz kılar, Expires üstbilgi daha kısıtlayıcı "[ w3.org/Protocols/rfc2616/rfc2616-sec14.html]
rosell.dk

8

Önbellek Denetimi HTTP / 1.1'de tanımlanmıştır, sunucudan istemciye tüm önbellekleme mekanizmalarını bu nesneyi önbelleğe alıp alamayacaklarını söyler. Saniyeler içinde ölçülür: Cache-Control: max-age=3600.

ExpiresBaşlık alanı yanıtı bayat kabul edilir ve bundan sonra tarih / zaman verir. Geçerlilik süresi değeri bir HTTP güncel zaman damgası geçerli: Expires: Tue, 18 Jul 2017 16:07:23 GMT.

Yanıt Cache-Control, max-ageyönerge içeren bir alan içeriyorsa , alıcının Expiresalanı yoksayması GEREKİR .


4

Heroku devcenter'ın bu konuda mükemmel bir makalesi var.

Ondan alıntı yaparak,

Cache-Control üstbilgisi istemci tarafı önbelleğe almayı açarken ve bir kaynağın maksimum yaşını ayarlarken, Expires üstbilgisi, kaynağın artık geçerli olmadığı belirli bir noktayı belirtmek için kullanılır.


0

CC'nin özel / genel seçenekleri dışında hiçbir fark göremiyorum. "Erişim artı 1 yıl / ay / hafta / gün" gibi Expires kullanıldığında, CC'nin yaptığı gibi çalışır.


Aşağı oyu açıklamak ister misiniz? Chrome, Safari ve Firefox'ta bazı kapsamlı testler yaptım. Önbellek Denetimi'nin, kullanım süresi dolurken kullanılamayan bazı seçenekleri vardır, ancak tüm pratik amaçlar için her ikisi de aynı şekilde çalışır.
Rob

-1

Hala ilgileniyorsanız, bu öneriyi doğrudan google'ın erkek çocuklarından bırakıyorum. https://developers.google.com/speed/docs/insights/LeverageBrowserCaching Önbellek Denetimi'nden önce Geçerlilik Süresi'ni tercih ediyorlar


Expires'ı Cache-Control yerine Over tercih ettiklerinden emin misiniz? En azından Firefox için geçersiz kılma yöntemini okudum. developer.mozilla.org/tr-TR/docs/Web/HTTP/Headers/Expires
Ecker00

Şu anda bu sayfada "Kullanımdan Kaldırıldı. Bu sayfa, kullanımdan kaldırılmış ve Mayıs 2019'da kapatılacak olan PageSpeed ​​Insights API'sının 4. sürümü için yazılmıştır. Sürüm 5 en son sürümdür ve Chrome Kullanıcı Deneyimi'nden hem gerçek dünya verilerini sunar. Lighthouse rapor ve laboratuvar verileri. "
Jochem Schulenklopper
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.