SORU
28 Aralık 2009, PAZARTESİ


Nasıl PHP ile HTTP önbellek başlıklarını kullanmak için

PHP 5.1.0 bir web sitesi (aslında aynı zamanda 5.1.0 çalıştırmalısınız 5.2.9 ).

Sayfaları dinamik olarak oluşturulur ama bunların çoğu çoğunlukla statik. İçeriği değişmez yani statik ise "şablon içeriği zaman içinde değişebilir etrafında".

Birkaç önbellek sistemleri ve PHP çerçeveler zaten orada olduğunu biliyorum, ama benim ana APC veya Memcached yüklü yok ve bu özel proje için herhangi bir çerçeve kullanarak değilim.

Sayfalar (varsayılan "izin vermemek" önbellek). PHP ile sanırım önbelleğe istiyorum Şimdiye kadar kullanıyorum:

session_cache_limiter('private'); //Aim at 'public'
session_cache_expire(180);
header("Content-type: $documentMimeType; charset=$documentCharset");
header('Vary: Accept');
header("Content-language: $currentLanguage");

Birçok öğreticiler okudum ama basit bir şey (önbellek karmaşık bir şey, ama ben sadece bazı temel şeylere ihtiyacı biliyorum) bulamıyorum.

Ne "olmalı" başlıkları önbelleğe yardım için göndermek zorunda?

Teşekkürler!

CEVAP
29 Aralık 2009, Salı


İsteyebilirsiniz kullanın private_no_expire yerine private ama set uzun bir süre içerik biliyorsun değiştirmeyecek ve emin işlem if-modified-since if-none-match istekleri benzer Emil sonrası.

$tsstring = gmdate('D, d M Y H:i:s ', $timestamp) . 'GMT';
$etag = $language . $timestamp;

$if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false;
$if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? $_SERVER['HTTP_IF_NONE_MATCH'] : false;
if ((($if_none_match && $if_none_match == $etag) || (!$if_none_match)) &&
    ($if_modified_since && $if_modified_since == $tsstring))
{
    header('HTTP/1.1 304 Not Modified');
    exit();
}
else
{
    header("Last-Modified: $tsstring");
    header("ETag: \"{$etag}\"");
}

$etag içerik veya kullanıcı KİMLİĞİ, Dil ve zaman damgası, örneğin dayalı bir sağlama olabilir

$etag = md5($language . $timestamp);

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • Joe DiFeo

    Joe DiFeo

    7 AĞUSTOS 2012
  • Matthew Smith

    Matthew Smit

    24 Mayıs 2010