Tek bir sayfa için tarayıcı önbelleğini devre dışı bırakmak için bir yolu var mı?

6 Cevap php

Küçük bir intranet sitesinde, ben Firefox hatalı önbelleğe olan bir dinamik (AJAX içerir) sayfası var. Tek bir sayfa için tarayıcı önbelleğini devre dışı bırakmak için bir yolu var mı?

İşte kullanıyorum Kurulum:

  • Apache XAMPP altında, bir Windows sunucu üzerinde çalışan
  • PHP

Clarification

Ben yaklaşık öncelikle endişeliyim içeriği sayfa metin ve bazı <select> s varsayılan seçenekleri bulunur. Ben sadece, örneğin, bazı görüntü URL'lerin sonuna rastgele numaraları ekleyemezsiniz.

Update:

Ben şimdiye kadar kazanılmış önerileri izledi:

  • (Aşağıya bakınız) nocache başlıklarını yolluyorum
  • Ben bir zaman damgası URL parametresini içeren ve sayfa bu gibi 2 saniye sonra yeniden ise yeni bir yönlendirme ediyorum:

    $timestamp = $_GET['timestamp'];
    if ((time()-$timestamp) > 2) {
        header('Location:/intranet/admin/manage_skus.php?timestamp='.time());
    }
    

Şimdi Kundakçı başlıkları önbellek yok belirtmek olduğunu gösterir, ancak sorun devam ederse. İşte sayfanın yanıt başlıkları şunlardır:

Date    Fri, 25 Sep 2009 20:41:43 GMT
Server  Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i mod_autoindex_renk PHP/5.2.8
X-Powered-By    PHP/5.2.8
Expires Mon, 20 Dec 1998 01:00:00 GMT
Last-Modified   Fri, 25 Sep 2009 20:41:43 GMT
Cache-Control   no-cache, must-revalidate
Pragma  no-cache
Keep-Alive  timeout=5, max=100
Connection  Keep-Alive
Transfer-Encoding   chunked
Content-Type    text/html

6 Cevap

Url parametresi olarak geçerli zaman damgası ekleme, örneğin

http://server.com/index.php?timestamp=125656789

Sen şu başlığı göndermek gerekir:

Cache-control: no-cache

HTTP yanıt.

Ben bu istediğini söyler düşünüyorum:

http://www.thesitewizard.com/archive/phptutorial2.shtml

"Caching itibaren Tarayıcı önlenmesi" için arayın

header( "Expires: Mon, 20 Dec 1998 01:00:00 GMT" );
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );

Sen bu başlıkları ekleyebilirsiniz:

Cache-Control: no-cache

Ve (HTTP/1.0 istemciler ile geriye dönük uyumluluk için)

Pragma: no-cache

Burada belirli PHP değil başka almak bulunuyor.

Lütfen <head> </head> bölümünde bu deneyin:

<meta http-equiv="cache-control" content="no-cache, no store"/>
<meta http-equiv="Expires" Content="Mon, 25 May 2009 19:07:03 GMT">

Burada uzun bir iplik sonunda bulundu:

http://forums.mozillazine.org/viewtopic.php?f=25&t=673135&start=75

Header () işlevini kullanın. Sen tüm tarayıcıları kapsayacak şekilde birkaç ayarlamak zorunda; bkz http://www.php.net/manual/en/function.header.php#75507