SORU
26 HAZİRAN 2009, Cuma


'Cache-Control arasındaki fark ne: max-age=0, no-cache?

0* *başlık içeriği bayat kabul (ve yeniden getirilmesi gerekir) derhal olduğunu, aslında Cache-Control: no-cache aynı şey olduğu anlamına gelir.

Google benim için bu gizemi çözmek için başarısız oldu :(

CEVAP
5 EYLÜL 2009, CUMARTESİ


Bu aynı soru vardı, ve benim aramalarda bazı bilgiler (soru sonuçlarından biri olarak ortaya çıktı. Ben tayin etti burada

Cache-Control Başlığı iki taraf vardır. Bir tarafı web sunucusu tarafından gönderilmiş olabilir. (aka. "kaynak sunucu"). Diğer taraftan tarayıcı tarafından gönderilmiş olabilir. (aka. "user agent").


Kaynak sunucu tarafından gönderilen

max-age=0 sadece önbelleğe yanıtı onlar bu yüzden en başından beri ve bayat olduğunu gösterir inanıyorumGEREKİRdüzeltin yanıt (örn. If-Not-Modified başlığı ile) önbelleğe alınmış bir kopyasını kullanmadan önce ise, no-cache onlar söylerGEREKİRönbelleğe alınmış bir kopyasını kullanmadan önce düzeltin. 14.9.1 What is Cacheable:

no-cache

...bir önbellek kullanmak ZORUNDA değilsiniz yanıtı bir sonraki isteğini yerine getirmek için başarılı yeniden doğrulaması olmadan kaynak sunucu. Bu bir sağlar kökeni önbelleğe alma önlemek için bile server için yapılandırılmış önbelleğe alır istemci için bayat tepkiler dönüş istekleri.

Diğer bir deyişle, önbelleğe olabilir bazen seçmek için kullanın bayat yanıt (gerçi sanırım onlar için ekleyin Warning başlık), ama no-cache olmadıklarını söylüyor izin kullanmak bayat yanıt ne olursa olsun. Belki istersin diyeGEREKİRbeyzbol istatistikler-düzeltin davranış bir sayfa oluşturulur, ama isterdimGEREKİRe-ticaret için üretilmiş yanıt verdiğinde-düzeltin satın alma davranışları.

no-cache depolama önlemek için sözde değil derken senin yorum senin dediğin doğru olsa da, aslında no-cache kullanırken başka bir fark olabilir. Yazan bir sayfa, Cache Control Directives Demystified, (onun doğruluğu konusunda garanti veremem) geldi:

Uygulamada, IE ve Firefox var hayır-önbellek davranmaya başladı eğer komut verir gibi Yönerge tarayıcı. Bu davranış gözlemleyerek başladık bir yıl kadar önce. Şüpheleniyoruz bu değişiklik nedeniyle alındı yaygın (ve yanlış) bunu kullanın Direktif önbelleğe alma önlemek için.

...

Geç bu "cache-control:dikkat edin no-cache" de başladı davranıyor "no-store" Direktifi gibi.

Bir kenara olarak, Cache-Control: max-age=0, must-revalidate temelde Cache-Control: no-cache aynı şey demek gerektiğini bana görünüyor. Bu yüzden almak için bir yolGEREKİRno-cache, no-store aynı anda no-cache belirgin geçiş kaçınarak-düzeltin davranış (örn. önbelleğe alma ne olursa olsun. hiç?


Kullanıcı Aracısı tarafından gönderildi

shahkalpesh's answer kullanıcı Aracısı tarafı için de geçerlidir sanırım. Ayrıca 13.2.6 Disambiguating Multiple Responses bakabilirsiniz.

Eğer bir kullanıcı Aracısı Cache-Control: max-age=0 ile bir istek gönderir (aka. "uçtan uca yeniden doğrulaması"), sonra da yol boyunca her önbellek önbellek girdisini (örn. düzeltin olacak kaynak sunucu If-Not-Modified başlığı) ile tüm yol. Eğer cevabınız 304 (Değişiklik), önbelleğe alınan varlık kullanılabilir.

Diğer taraftan, Cache-Control: no-cache ile bir istek göndermek (aka. "uçtan uca yeniden") düzeltin yok ve sunucuOLMAMALIDIRyanıt önbelleğe alınmış bir kopyasını kullanır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Google

    Google

    18 EYLÜL 2005
  • kndx

    kndx

    11 Mart 2006
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009