SORU
8 EYLÜL 2008, PAZARTESİ


Yapma web sayfası, tüm tarayıcılarda önbelleğe emin

Araştırmalarımız tüm tarayıcılar düzgün bir şekilde http önbellek direktifleri saygı gösterdi.

Güvenlik nedeniyle önbelleğe bizim uygulama, bazı sayfaları istemiyoruzhiçweb tarayıcı tarafından. Bu en azından aşağıdaki tarayıcılar için çalışması gerekir.

  • Internet Explorer 6
  • Firefox 1.5
  • Safari 3
  • Opera 9
  • Krom

Bizim gereksinimi güvenlik testi geldi. Sitemizden çıkış yaptıktan sonra Geri düğmesine basın ve önbelleğe alınan sayfaları görüntüleyebilirsiniz.

CEVAP
14 Ocak 2010, PERŞEMBE


Giriş

Tüm arasında çalışan başlıkları doğru en az bir set istemciler (ve yakınlık) söz:

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

Cache-Control müşteri ve vekiller için HTTP 1.1 spec (ve dolaylı olarak bazı istemciler Expires yanında gerekli) ' dır. Pragma tarih öncesi istemcileri için bir HTTP 1.0 spec başına. Expires müşteriler ve vekiller için HTTP 1.0 ve 1.1 spec başına. HTTP 1.1, Cache-Control HTTP sonuçta 1.0 vekiller sadece Expires, önceliklidir.

Pragma 1.0 istemciler (HTTP 1.1 tanıtıldı 1997) HTTP umurunda bile göz ardı edilebilir. Eğer sunucu otomatik içerir geçerli Date başlık, daha sonra teorik olarak ihmal Cache-Control çok güveniyor ve Expires sadece, ama bu başarısız olursa, örneğin son kullanıcıya yönetir işletim sistemi tarihi ve istemci yazılımı güvenerek.

max-age gibi Cache-Control diğer parametreler ise yukarıda belirtilen üç belirtilirse alakasız. En diğer cevaplar burada dahil olarak Last-Modified Başlığısadeceeğer ilginçaslında istiyorumönbellek isteği, onu belirtmenize gerek yok.

Nasıl ayarlanır?

PHP kullanarak:

header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
header("Pragma: no-cache"); // HTTP 1.0.
header("Expires: 0"); // Proxies.

Java Sunucu uygulaması ya Node.js kullanarak:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setHeader("Expires", "0"); // Proxies.

ASP.NET kullanarak:

Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.

ASP kullanarak:

Response.addHeader "Cache-Control", "no-cache, no-store, must-revalidate" ' HTTP 1.1.
Response.addHeader "Pragma", "no-cache" ' HTTP 1.0.
Response.addHeader "Expires", "0" ' Proxies.

Raylar, ya da şişenin üzerine Python Ruby kullanarak:

response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate" # HTTP 1.1.
response.headers["Pragma"] = "no-cache" # HTTP 1.0.
response.headers["Expires"] = "0" # Proxies.

Google Kullanarak:

responseWriter.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") // HTTP 1.1.
responseWriter.Header().Set("Pragma", "no-cache") // HTTP 1.0.
responseWriter.Header().Set("Expires", "0") // Proxies.

Apache .htaccess dosyası kullanarak:

<IfModule mod_headers.c>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</IfModule>

HTML4 kullanarak:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

Meta etiketleri vs HTTP yanıt başlıklarını HTML

Bir HTML sayfası HTTP bağlantı ve başlık üzerinde servis edilir zaman mevcut olduğunu bilmek önemlidirher ikisi deHTTP yanıt başlıkları ve <meta http-equiv> HTML etiketleri, bir HTTP yanıt Başlığı belirtilen HTML meta etiketi üzerinde öncelik alacak. HTML meta tag, sadece sayfa file:// bir URL üzerinden yerel disk dosya sistemi görüntülendiğinde kullanılacak. Ayrıca W3 HTML spec chapter 5.2.2 bkz. Web sunucusu yani bazı varsayılan değerler vardır, çünkü onları programlı olarak belirtmek, bilmiyorsan bununla ilgileneceğim.

Genel olarak, daha iyi edersindeğilHTML meta etiketleri başlayanlar karışıklığı önlemek ve sabit bir HTTP yanıt başlıklarını güvenmek belirtin. Ayrıca, özellikle <meta http-equiv> bu etiketleri HTML5 invalid. http-equiv değerleri HTML5 specification listelenen izin verilir.

Gerçek HTTP yanıt başlıkları doğrulanıyor

Bu bir doğrulamak için ve diğer/HTTP onları hata ayıklama görebilirsiniz tarayıcı geliştirici araç Trafiği izlemek. Sen şu anda basarak F12 Krom/Firefox23 /9 , ve sonra açılış "Ağ" ya da "Net" sekmesini panel, ve sonra klik HTTP isteği ilgi ortaya çıkarmak için her detay hakkında HTTP isteği ve yanıtı. below screenshot Krom:

Chrome developer toolset HTTP traffic monitor showing HTTP response headers on stackoverflow.com

Dosya indirme o Başlıkları da ayarlamak istiyorum

Öncelikle, bu soru-cevap hedef üzerinde "web sayfaları" (HTML sayfaları), "dosya indirme" (PDF, zip, Excel, vb.). Onları daha iyi önbelleğe ve bazı dosya sürümü kullanın bir yere URİ yol veya değiştirilmiş bir dosya üzerinde yeniden indirin zorlamak için sorgu dizesi içinde tanımlayıcı olursun. No-cache bu uygulama dosya indirme zaten başlıkları, sonra HTTP yerine HTTPS üzerinden dosya indirme servis 7/8 hata dikkat edin. Detaylı bilgi için IE cannot download foo.jsf. IE was not able to open this internet site. The requested site is either unavailable or cannot be found bkz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8lacKy

    8lacKy

    30 Mart 2009
  • Shantanu Sood

    Shantanu Soo

    3 Kasım 2008
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011