利用http last-modified If-Modified-Since实现缓存

具体流程:客户端发送第一个请求时候,服务器端将文件最新修改的时间last-modified发送给客户端,当客户端在此发送请求是时,客户端会通过 If-Modified-Since 头将先前服务器端发过来的 Last-Modified 最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客户端的页面是否是最新的,如果不是最新的,则返回新的内容,如果是最新的,则 返回 304 告诉客户端其本地 cache 的页面是最新的,于是客户端就可以直接从本地加载页面了,这样在网络上传输的数据就会大大减少,同时也减轻了服务器的负担。

PHP实现例子:

<?php

$client_time = (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) : 0);

$last_modifiy = 0;

 

if(file_exists('content.txt'))

{

    $content = file_get_contents("content.txt");

    $last_modifiy = filemtime("content.txt");

}

$ExpiresDate=(10*365*24*60*60);
$timefomat='D, d M Y H:i:s';

$Expires=$lastmod + $ExpiresDate;

 

if ($last_modifiy> $client_time){
    header('Expires: '.gmdate($timefomat, $Expires).' GMT');
    header('Last-Modified: '.gmdate($timefomat, $lastmod).' GMT', true, 200);
    echo $content;
}else{
    header('Expires: '.gmdate($timefomat, $Expires).' GMT');
    header('Last-Modified:'.gmdate($timefomat, $client_time).' GMT', true, 304);
    exit(0);
}

 

 

?>


作者: qqsheji   发布时间: 2010-12-19