PHP 와 브 라 우 저 캐 시 에 대한 분석
7472 단어 PHP브 라 우 저 캐 시
if ($_SERVER["HTTP_IF_NONE_MATCH"] == "claymorephp.com")
{
header('Etag:'.'zhaiyun.com',true,304);
exit();
}
else {
header('Etag:'."claymorephp.com");
}
:
$expires=date("Ymd"); //
if ($_SERVER["HTTP_IF_NONE_MATCH"] == $expires)
{
header('Etag:'.$expires,true,304);
exit();
}
else {
header('Etag:'.$expires);
}
if ($_SERVER["HTTP_IF_NONE_MATCH"] == "claymorephp.com") { header('Etag:'.'zhaiyun.com',true,304); exit(); } else { header('Etag:'."claymorephp.com"); } : $expires=date("Ymd"); // if ($_SERVER["HTTP_IF_NONE_MATCH"] == $expires) { header('Etag:'.$expires,true,304); exit(); } else { header('Etag:'.$expires); }
로 복사 합 니 다.또한 GZIP 과 ETAG 가 동시에 사용 할 때 문제 가 발생 할 수 있 습 니 다.바로 ETAG 가 가치 가 없다 는 것 입 니 다.이 문 제 는 보편적으로 존재 합 니 다.저 는 관련 된 이 유 를 찾 지 못 했 습 니 다.인터넷 을 한참 뒤 졌 는데,보편적 인 사람들 은 BUG 라 고 부른다.상기 원인 을 바탕 으로 PHPBLOG 에 대한 클 라 이언 트 캐 시 는 다음 과 같이 처 리 됩 니 다(동시에 HTTPIF_NONE_MATCH 와 HTTPIF_MODIFIED_SINCE 판단):PHP 코드 를 클립보드
if($_SERVER['HTTP_IF_NONE_MATCH'])
{
if($_SERVER['HTTP_IF_NONE_MATCH'] == 'phpblog')
{
header('Etag:phpblog',true,304);//
$_SESSION['time_end']=microtime(true);
exit();
}
}
else if($_SERVER['HTTP_IF_MODIFIED_SINCE'])//eg:Sun, 02 Nov 2008 07:08:25 GMT; length=35849
{
$array=explode(' ',$_SERVER['HTTP_IF_MODIFIED_SINCE']);
$gmday=$array[1];
$month_array=array(
"Jan"=>"01",
"Feb"=>"02",
"Mar"=>"03",
"Apr"=>"04",
"May"=>"05",
"Jun"=>"06",
"Jul"=>"07",
"Aug"=>"08",
"Sep"=>"09",
"Oct"=>"10",
"Nov"=>"11",
"Dec"=>"12");
$gmmonth=$month_array[$array[2]];
$gmyear=$array[3];
$array=explode(':',$array[4]);
$gmtimestamp=gmmktime($array[0],$array[1],$array[2],$gmmonth,$gmday,$gmyear);
if(gmmktime()-$gmtimestamp<$config_client_cache_time*60*60)
{
header('Etag:phpblog',true,304);//
$_SESSION['time_end']=microtime(true);
exit();
}
}
if($_SERVER['HTTP_IF_NONE_MATCH']) { if($_SERVER['HTTP_IF_NONE_MATCH'] == 'phpblog') { header('Etag:phpblog',true,304);// $_SESSION['time_end']=microtime(true); exit(); } } else if($_SERVER['HTTP_IF_MODIFIED_SINCE'])//eg:Sun, 02 Nov 2008 07:08:25 GMT; length=35849 { $array=explode(' ',$_SERVER['HTTP_IF_MODIFIED_SINCE']); $gmday=$array[1]; $month_array=array( "Jan"=>"01", "Feb"=>"02", "Mar"=>"03", "Apr"=>"04", "May"=>"05", "Jun"=>"06", "Jul"=>"07", "Aug"=>"08", "Sep"=>"09", "Oct"=>"10", "Nov"=>"11", "Dec"=>"12"); $gmmonth=$month_array[$array[2]]; $gmyear=$array[3]; $array=explode(':',$array[4]); $gmtimestamp=gmmktime($array[0],$array[1],$array[2],$gmmonth,$gmday,$gmyear); if(gmmktime()-$gmtimestamp<$config_client_cache_time*60*60) { header('Etag:phpblog',true,304);// $_SESSION['time_end']=microtime(true); exit(); } }
캐 시 에 복사 한 HEADER 는 이렇게 보 냅 니 다.PHP 코드 를 클립보드
$client_cache_time=$config_client_cache_time*60*60;// -
header('Cache-Control: public, max-age='.$client_cache_time);
header('Expires: '.gmdate('D, d M Y H:i:s',time()+$client_cache_time).' GMT');//
header('Last-Modified: '.gmdate('D, d M Y H:i:s',time()).' GMT');//
header('Pragma: public');
header('Etag:phpblog');// , ( )
$client_cache_time=$config_client_cache_time*60*60;// - header('Cache-Control: public, max-age='.$client_cache_time); header('Expires: '.gmdate('D, d M Y H:i:s',time()+$client_cache_time).' GMT');// header('Last-Modified: '.gmdate('D, d M Y H:i:s',time()).' GMT');// header('Pragma: public'); header('Etag:phpblog');// , ( )
에 복사 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.