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
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:
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.
Nasıl herhangi bir önbelleğe ve yenide...
Açısal $http Önbelleğe alma sorunu YAN...
Şu anda Simgelerini destekleyen tüm ta...
Kaç AJAX (XmlHttpRequest) eşzamanlı is...
Yapma böyle büyük mükafat renk RGB...