Posted on 2008/09/08 12:59
Filed Under [1] IT 관련/4. Programming

서버의 부하를 줄이기 위한 정적페이지 만드는 함수입니다.
퍼오긴 했는데 출처를 모르겠네요. 출처를 아시는 분이 계시다면
제게 메일 부탁드립니다.

정적페이지 소스 (Language : php)
  1. <?
  2. /*
  3. ## 캐쉬 디렉토리에 해당 디렉토리를 만들어 준다(퍼미션 0777)
  4. ## /cache/main
  5. ## life_time 시간내에는 캐쉬디렉토리에 있는 정적페이지를 보여준다.
  6. ## $is_cache : 캐쉬사용여부
  7. ## $cache_dir : 캐쉬 디렉토리
  8. ## $life_time : 캐쉬 유효시간 (초)
  9. */
  10.  
  11. function ps_cache_chk($is_cache = true, $cache_dir = '../cache',$life_time = 3600)
  12. {
  13.   global $HTTP_GET_VARS,$HTTP_POST_VARS,$HTTP_SERVER_VARS;
  14.  
  15. ## 캐쉬 파일 사용여부
  16. if($is_cache == true && count($HTTP_POST_VARS) == 0){
  17.  
  18. ## 캐쉬페이지 URL
  19. $cache_file_name = $cache_dir.$HTTP_SERVER_VARS['REQUEST_URI'];
  20.  
  21. ## 현재페이지 URL
  22. $url = sprintf("http://%s%s?%s",$HTTP_SERVER_VARS['HTTP_HOST'],
  23. $HTTP_SERVER_VARS['PHP_SELF'],$HTTP_SERVER_VARS['QUERY_STRING']);
  24.  
  25. ## 현재페이지 읽기 위한 URL no_cache=true 추가
  26. $rurl = sprintf("http://%s%s?no_cache=true&%s",$HTTP_SERVER_VARS
  27. ['HTTP_HOST'], $HTTP_SERVER_VARS['PHP_SELF'],$HTTP_SERVER_VARS
  28. ['QUERY_STRING']);
  29.  
  30. ## 파일이 존재하고 시간이 유효한경우
  31. if(file_exists($cache_file_name) && (time()- filemtime($cache_file_name)) < $life_time)
  32. {
  33.   echo "정적 HTML파일을 호출합니다";
  34.   $fp = fopen($cache_file_name,'r');
  35.   if($fp){
  36.     $content = fread($fp,filesize($cache_file_name));
  37.     fclose($fp);
  38.     echo $content;
  39.     exit;
  40.   }
  41. }
  42. else{
  43.   echo "유효시간이 지나 새로운 정적페이지를 만듭니다";
  44.   ## 현재페이지 읽기
  45.   $fd = fopen ($rurl, "r");
  46.   while (!feof ($fd)) {
  47.   $content .= fgets($fd, 1024);
  48. }
  49.  
  50. ## 캐쉬파일작성
  51. $fp = fopen($cache_file_name,'w');
  52. if($fp){
  53.   fwrite($fp,$content);
  54.   fclose($fp);
  55. }
  56. echo $content;
  57. }
  58. } ## is_cache end
  59. }
  60. $is_cache = ($no_cache) ? false : true ;
  61.  
  62. /*
  63. $is_cache 가 true 경우 캐쉬파일을 읽어옮
  64. $is_cache 가 false 경우 캐쉬파일을 새로작성
  65. */
  66.  
  67. ps_cache_chk($is_cache,"../cache",60);
  68. ?>
  69. <table border=1>
  70. <tr>
  71. <td>파일내용</td>
  72. </tr>
  73. </table>


 


2008/09/08 12:59 2008/09/08 12:59

트랙백 주소 : http://jaehun.org/trackback/19

About

by Jaehun

Counter

· Total
: 51165
· Today
: 16
· Yesterday
: 100