Chinaunix首页 | 论坛 | 博客
  • 博客访问: 232503
  • 博文数量: 54
  • 博客积分: 2656
  • 博客等级: 少校
  • 技术积分: 1020
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-19 21:06
文章分类

全部博文(54)

文章存档

2016年(3)

2014年(8)

2013年(4)

2012年(2)

2011年(29)

2010年(8)

我的朋友

分类:

2010-12-19 21:30:02

具体流程:客户端发送第一个请求时候,服务器端将文件最新修改的时间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);
}

 

 

?>


阅读(1467) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~