SORU
29 Aralık 2009, Salı


Bu işlevi nedir "Vary: Accept&; HTTP başlık " mı?

PHP dinamik Web sayfaları üretmek için kullanıyorum. Aşağıdaki öğretici (aşağıdaki bağlantıya bakınız) belirtildiği gibi, XHTML belgeleri MIME tipi olmalı "" ne zaman $_SERVER['HTTP_ACCEPT'] sağlar. application/xhtml xml 2 farklı Pandomim ile aynı sayfa servis yapabilirsiniz beri ("" ve "") text/html ayarlamanız gerekir "" HTTP Başlığı"". Kabul Değişir application/xhtml xml Bu vekiller önbellek yardımcı olacaktır.

Link: http://keystonewebsites.com/articles/mime_type.php

Şimdi bir anlam emin değilim: ('Değişir:') Kabul;başlık Gerçekten ne olduğundan emin değilim 'Değişir:' doğrusu... Kabul etmek

Bulabildiğim tek açıklama şudur:

İçerik Türü Başlığı sonra, bir Değişiklik başlık gönderilir (eğer anladıysam doğru) ara önbelleğe söyle, proxy sunucu, içerik böyle belge türüne bağlı olarak değişir istemci yetenekleri belge. http://www.456bereastreet.com/archive/200408/content_negotiation/

Kimse bana ver "" bu başlık açıklaması (real ^strong>bu değer ile). Şey gibi anladım: Accept-Encoding Vary: vekiller, önbellek sayfa sunumu kodlama dayalı olabilir, ama anlamıyorum: Vary: Accept

CEVAP
29 Aralık 2009, Salı


  • Önbelleğe alma proxy söylemek için bir HTTP Sunucusu için birincil mekanizmadır cache-control başlık "tazelik" bir yanıt. (önbelleğinde yanıt saklamak için nasıl eğer uzun yani)

  • Bazı durumlarda, cache-control direktifler yetersizdir. HTTP çalışma grubundaki tartışma here, sadece dil ile değiştiren bir sayfa açıklayan arşivlenir. Budeğilbu doğru kullanma durumu Başlığı değişebilir, ama içerik bizim tartışma için değerlidir. Başlığı bu durumda sorunu çözmek istiyorsunuz Değişir inanıyorum (her ne kadar, daha İyi bir Yolu yoktur.) Bu sayfadan:

Vary umutsuz ya da bir proxy sunucusu ne çoğaltmak için aşırı derecede karmaşık olan yerde kesinlikle bu durumlar için.

  • page bu sunucu açısından başlık kullanımı açıklar, önbelleğe alma proxy açıdan one Bu. Bir istek teklik belirleyen HTTP istek başlıklarını bir dizi belirtmek için kullanılır.

Yapmacık bir örnek:

HTTP server büyük açılış sayfası vardır. Aynı URL ile biraz farklı iki sayfa, eğer kullanıcı daha önce olmuştur, eğer var bağlı. İstekler ve kullanıcı sayısı "Çerez dayalı." ziyaret ayırt Ama senin server açılış sayfasını bu yana Ara vekiller mümkünse yanıt önbellek istediğiniz kadar büyük.

URL, Son Değiştirilmiş ve Önbellek-Kontrol başlıklarını yetersiz olan bu fikir için bir önbelleğe alma proxy, ama eğer siz ekleyin Vary: Cookie önbellek motoru Ekle Cookie başlık için kendi önbelleğe alma kararları.

Son olarak, küçük bir trafik için, dinamik web siteleri ... ben her zaman basit Cache-Control: no-cache, no-store Pragma: no-cache yeterli bulduk.

-- Daha doğrusu sorunun cevabı Edit: HTTP isteği başlık 'Kabul' tanımlayan bir istemci işleyebilir İçerik Türleri. Eğer aynı URL aynı içerik, İçerik Türü yalnızca farklı iki kopyası varsa, o zaman Vary: Accept kullanımı uygun olabilir.

Güncelleme 11 Eylül 12:

Bu yorumu beri yorumlarda ortaya çıkan bağlantılar gönderildi birkac dahil ediyorum. Değişiklik ile gerçek dünya örnekleri için de mükemmel bir kaynak (ve sorunları). Kabul; bu bağlantıları da okumak gerekir bu cevap okuyorsun Iıf.

İlk olarak, Internet Explorer davranışını başlık Değişir ve geliştiriciler için sunduğu zorluklar bazı önemli EricLaw: Vary Header Prevents Caching in IE. Kısacası, IE (ön) 9 önbellek kullanan herhangi bir içerik isteği önbellek HTTP İstek başlıklarını içermediği için başlığı değişmez. EricLaw (gerçek dünyada Eric Lawrence) YANİ takım Program Yöneticisi.

Eran Medan, ve devam Değişebilir ile ilgili beklenmeyen bir davranış tartışma bir ikinci Krom: Backing doesn't handle Vary header correctly. YANİ bu davranışla ilgili, Chrome geliştiriciler farklı bir yaklaşım kasıtlı bir seçim yapmış gibi görünmüyor ama ... hariç.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • John Lynn

    John Lynn

    8 Ocak 2010
  • Noam Erez

    Noam Erez

    3 NİSAN 2012
  • super1988guy

    super1988guy

    9 Aralık 2007