PHP benim tanımlı ETAG'ları uymamanın

2 Cevap php

What I'm doing

Ben veritabanından bir resim çekerek ve tüm uygun başlıkları ile tarayıcıya yolluyorum - görüntü görüntüler gayet iyi. Ben de etiket olarak görüntünün içeriğinin SHA1 kullanarak, bir ETag başlığını gönderirler.

Görüntüler düzenli yarı denir alıyorsanız, bu yüzden önbelleğe bir sorun biraz (siteyi öldürmek değil, ama güzel olması için).

The Problem

$ _SERVER ['HTTP_IF_NONE_MATCH'] bana uygun değil. Bildiğim kadarıyla söyleyebilirim, bu, çünkü PHP'nin "önbellek denetimleri itaatsizlik" yaşam tarzı olduğunu. Ben erişiminiz yok, çünkü oturum önbellek sınırlayıcı karışıklık olamaz. Ben erişiminiz olsa bile Ama, ben ona dokunmak istemem: sitenin% 99 WordPress altında.

The Environment

  • PHP 4 (sormayın)
  • Apache 2.2
  • WordPress
  • Görüntüleri ben değiştiremem, hangi veritabanı (largeblog) yaşıyor.

Vb Herhangi bir rehberlik, uç / hileler, yararlı olacaktır. Ben çevre / yapısal şeyler değiştirmek için çok oda yok.

Şerefe.

2 Cevap

Eğer apache_request_headers() adlı HTTP_IF_NONE_MATCH okuma denediniz mi?

Önceden 4.3 php çalıştırıyorsanız, daha önce () getallheaders denirdi.


Edit I now see, in the page I linked, that you may also want to try to put

RewriteEngine on
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]

[...] değişkenleri PHP $ _SERVER ayarlamak için Apache zorlamak için uygun. htaccess dosyasında Eğer başarısız okumaya çalışıyoruz.

PHP If-None-Match maç başlığını alıyor değilse, çok fazla yapabileceğiniz bir şey yok. Sana "PHP'nin" itaatsizlik cache kontrolleri "," ile ne demek bilmiyorum; PHP on-the-fly keyfi dinamiğine üretir, bu önsel, geri dönmek için ne istemci veya tarafından önbelleğe alınmış olup olmadığını bilemez.

Neyse, müşteri başlığını GÖNDERME aslında olup olmadığını araştırmak gerekir. O, ancak PHP ulaşan değilse, bu Apache ulaşıyor olmadığını kontrol edin. Bu PHP ulaşıyor ama Apache, her zaman sorgu dizesi (test değil!) Gibi başlık ekleme gibi, mod-rewrite ile bazı çözüm hack olsaydı:

RewriteCond %{HTTP_IF_NONE_MATCH} (.+)
RewriteRule ^/get_image.php /get_image.php?if-none-match=%1 [B,QSA]