PHP kaldır HTTP başlık

9 Cevap php

Şey, ben Apache, PHP tarafından oluşturulan tüm yanıtları bu HTTP başlıklarını ekler düşünüyorum:

Expires:   Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control:  no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Bu gerçek dinamik sayfalar için Tamam çalışır, ancak ben, PHP tarafından oluşturulan ederken, çoğunlukla statik bazı sayfası var ve ben onları önbelleğe tarayıcı istiyorum.

Yanıtı gelenler başlıklarını kaldırmak ve böylece tarayıcının varsayılan önbellekleme kurallarını etkinleştirmek için PHP bir yolu var mı, ya da değil, ben bu onları yok olma ile eşdeğerdir onları ayarlayabilirsiniz herhangi bir değeri var mı?

Ben tarayıcı (mod_cache kullanmadan) Apache kendisi tarafından sunulmaktadır statik kaynaklar için aynı önbelleğe alma kurallarını kullanmak istiyorum çünkü ben, benim kendi değerlerini ayarlamak için tercih ediyorum.

9 Cevap

Gerçekten bu başlıkları ayarlar php senaryolarından biri değilse ilk ben kontrol ederdim.

register_shutdown_function('foo');
echo "test";

function foo() {
  flush();
  $c = "headers_list: \n  " . join("\n  ", headers_list());

  if ( function_exists('apache_response_headers') ) {
    $c .= "\napache_response_headers:";
    foreach( apache_response_headers() as $k=>$v) {
      $c.= "\n  $k=$v";
    }
  }
  $c .= "\n\n";
  echo '<pre>', $c, '</pre>';
}

Bu sunucu üzerinde "kullanılabilir" bir şeyler yazdırmak mı?

Bu özel dosya için farklı bu başlıkları ayarlamak başlık () çağrıları ekleyebilirsiniz. yani. header("Expires: " . $currentDatePlus10);

header("Cache-Control: max-age=3600, must-revalidate")
header("Expires: Fri, 1 Jan 2038 05:00:00 GMT");

veya uzak gelecekte bazı eşit derecede saçma bir zaman. Eğer sayfanın tamamı için çıktı tamponlama yapıyoruz sürece herhangi bir çıkış, gönderilen önce başlık değerlerini ayarlamayı unutmayın.

http://php.net/manual/en/function.header.php

Onlar her yerde PHP tarafından otomatik olarak eklenen nerede bulamıyorum, ne de onlar benim LAMBASI kurulumları herhangi gibi bir yere bu değişkenleri belirledi kodunuzu, büyük olasılıkla vardır.

Benim yükler için yalnızca otomatik olarak oluşturulan başlık X-Powered-By PHP sürümü ile.

Eğer dediğim gibi, onlar (header("Expires:"); eski başlığı değiştirmek söyleyerek, ancak header("Cache-control:"); sadece benim tarayıcıda Cache-Control: max-age=0 oldu tavsiye docs bu yüzden değil siz) yapmaya çalışıyoruz ne.

Ben bu değerler çerçevesinde gelen olmadığını kontrol ya sen değiştin ayarı tavsiye ederim, ancak PHP'nin çalıştığı olurdu PHP / platformları farklı sürümleri arasında farklı olabilir.

I ExpiresByType ya da küresel biçimlendirimleri, sankonlara, pr. Htaccess dosyaları veya <IfModule mod_expires> kapsüllü herhangi bloklarda ExpiresDefault direktifleri veya {[(3)] için kontrol ediyorum }

"Ben tarayıcı (mod_cache kullanmadan) Apache kendisi tarafından sunulmaktadır statik kaynaklar için aynı önbelleğe alma kurallarını kullanmak istiyorum."

Statik bir kaynak bakıyor ve daha sonra kurallara uyan deneyin. Sen hesaplayabilirsiniz ile bu offest Bitiş -> http://www.php.net/manual/en/function.header.php#93377

suppress that of the cache can be made as follows: PHP Code:

header ( "Cache-Control: no-cache, must-revalidate"); / / HTTP/1.1
header ( "Expires: Mon, 1 Jul 1990 05:00:00 GMT"); / / Date in the past

Eğer otomatik olarak oluşturmak istiyorsanız, o zaman bu Buradasınız: PHP: session_cache_limiter() - Manuel onlar

Sayfalarınız sık sık bu gibi Etag başlıklarını kullanarak düşünmelisiniz değil değişiyor eğer:

https://gist.github.com/oliworx/4951478

Bu, özellikle (cep telefonu gibi) yavaş bağlantılarda yararlıdır.

İpucu: Her zaman kontrol etmelisiniz, tarayıcı gerçekten firefox addon ile, yükleme ne "Live HTTP başlıklarını": https://addons.mozilla.org/de/firefox/addon/live-http-headers/

Bu önbellek başlıklar oturumları kullanmaya başladığınızda gönderilen ve varsayılan olarak "nocache" ayarlanır; Bu tabii her istek tutarlı sonuçlar verir hale getirir.

Eğer bir sepeti sistemi ve tarayıcı önbelleklerini /add?product=xyz varsa Örneğin, yine ürün eklemek olmayabilir; Bu ne istediğinizi muhtemelen değildir.

Varsayılan ayar kullanarak session_cache_limiter() before session_start() veya ilgili session.cache_limiter yapılandırma ayarı değiştirilebilir olduğunu söyledikten sonra ayarı.

Ben denemedim ama muhtemelen gibi sayfaları kaydetmek olabilir. Özel başlıklarını ya da-bir eksikliği ve komut içinde çalıştırabilir ile html dosyaları