웹프로그래밍

Global It Leader!!


jQuery


 
 

css js 압축된 캐쉬로 전송하기

페이지 정보

작성자 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 6,995회 작성일 11-04-29 17:02

본문

 

<?php

 


 $cache    = true;
 $cachedir = dirname(__FILE__) . '/cache';
 $cssdir   = dirname(__FILE__) . '/html/css';
 $jsdir    = dirname(__FILE__) . '/js';

 // Determine the directory and type we should use
 switch ($_GET['type']) {
  case 'css':
   $base = realpath($cssdir);
   break;
  case 'javascript':
   $base = realpath($jsdir);
   break;
  default:
   header ("HTTP/1.0 503 Not Implemented");
   exit;
 };

 $type = $_GET['type'];
 $elements = explode(',', $_GET['files']);
 
 // Determine last modification date of the files
 $lastmodified = 0;
 while (list(,$element) = each($elements)) {
  $path = realpath($base . '/' . $element);
 
  if (($type == 'javascript' && substr($path, -3) != '.js') ||
   ($type == 'css' && substr($path, -4) != '.css')) {
   header ("HTTP/1.0 403 Forbidden");
   exit; 
  }
 
  if (substr($path, 0, strlen($base)) != $base || !file_exists($path)) {
   header ("HTTP/1.0 404 Not Found");
   exit;
  }
  
  $lastmodified = max($lastmodified, filemtime($path));
 }
 
 // Send Etag hash
 $hash = $lastmodified . '-' . md5($_GET['files']);
 header ("Etag: \"" . $hash . "\"");
 
 if (isset($_SERVER['HTTP_IF_NONE_MATCH']) &&
  stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) == '"' . $hash . '"')
 {
  // Return visit and no modifications, so do not send anything
  header ("HTTP/1.0 304 Not Modified");
  header ('Content-Length: 0');
 }
 else
 {
  // First time visit or files were modified
  if ($cache)
  {
   // Determine supported compression method
   $gzip = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip');
   $deflate = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate');
 
   // Determine used compression method
   $encoding = $gzip ? 'gzip' : ($deflate ? 'deflate' : 'none');
 
   // Check for buggy versions of Internet Explorer
   if (!strstr($_SERVER['HTTP_USER_AGENT'], 'Opera') &&
    preg_match('/^Mozilla\/4\.0 \(compatible; MSIE ([0-9]\.[0-9])/i', $_SERVER['HTTP_USER_AGENT'], $matches)) {
    $version = floatval($matches[1]);
    
    if ($version < 6)
     $encoding = 'none';
     
    if ($version == 6 && !strstr($_SERVER['HTTP_USER_AGENT'], 'EV1'))
     $encoding = 'none';
   }
   
   // Try the cache first to see if the combined files were already generated
   $cachefile = 'cache-' . $hash . '.' . $type . ($encoding != 'none' ? '.' . $encoding : '');
   
   if (file_exists($cachedir . '/' . $cachefile)) {
    if ($fp = fopen($cachedir . '/' . $cachefile, 'rb')) {

     if ($encoding != 'none') {
      header ("Content-Encoding: " . $encoding);
     }
    
     header ("Content-Type: text/" . $type);
     header ("Content-Length: " . filesize($cachedir . '/' . $cachefile));
  
     fpassthru($fp);
     fclose($fp);
     exit;
    }
   }
  }
 
  // Get contents of the files
  $contents = '';
  reset($elements);
  while (list(,$element) = each($elements)) {
   $path = realpath($base . '/' . $element);
   $contents .= "\n\n" . file_get_contents($path);
  }
 
  // Send Content-Type
  header ("Content-Type: text/" . $type);
  
  if (isset($encoding) && $encoding != 'none')
  {
   // Send compressed contents
   $contents = gzencode($contents, 9, $gzip ? FORCE_GZIP : FORCE_DEFLATE);
   header ("Content-Encoding: " . $encoding);
   header ('Content-Length: ' . strlen($contents));
   echo $contents;
  }
  else
  {
   // Send regular contents
   header ('Content-Length: ' . strlen($contents));
   echo $contents;
  }

  // Store cache
  if ($cache) {
   if ($fp = fopen($cachedir . '/' . $cachefile, 'wb')) {
    fwrite($fp, $contents);
    fclose($fp);
   }
  }
 } 
 ?>

맨위줄쪽에 캐쉬로쓸 디렉토리 정해주시고 만드세요 777로
css와 js있는 디렉토리 적어주시고요

http://sdfs.com/.htaccess 파일을 열어 맨 밑줄에

RewriteRule ^html/css/(.*\.css) /combine.php?type=css&files=$1
RewriteRule ^js/(.*\.js) /combine.php?type=javascript&files=$1

적어 줍니다.

css javascript 파일이 호출되면 전에 만들어 두었던 압축된 캐쉬 파일로 전송합니다

cache-1249483693-199c2258d6f623667976533a77b1e675.javascript.gzip
요런식의 파일이 만들어집니다. 용양은대략 50%~60% 정도 줄어드네요

댓글목록

등록된 댓글이 없습니다.

전체 148
게시물 검색
jQuery 목록
번호 제목 글쓴이 조회 날짜
148 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11305 04-29
147 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8911 03-14
146 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8496 06-15
145 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8155 08-28
144 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 7758 05-07
143 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 7547 06-16
142 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 7051 11-10
열람중 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6996 04-29
140 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6950 05-10
139 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6860 09-17
138 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6841 07-26
137 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6544 06-01
136 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6543 07-13
135 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6470 10-03
134 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6417 04-05
133 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6414 06-14
132 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6402 05-03
131 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6391 12-16
130 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6318 05-13
129 no_profile 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6202 05-30