웹프로그래밍

Global It Leader!!


jQuery


 
 

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

페이지 정보

작성자 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 6,835회 작성일 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% 정도 줄어드네요

댓글목록

등록된 댓글이 없습니다.

전체 142
게시물 검색
jQuery 목록
번호 제목 글쓴이 조회 날짜
142 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11127 04-29
141 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8723 03-14
140 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8356 06-15
139 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 8029 08-28
138 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 7609 05-07
137 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 7305 06-16
136 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6904 11-10
열람중 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6836 04-29
134 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6777 05-10
133 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6705 07-26
132 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6630 09-17
131 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6425 06-01
130 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6419 07-13
129 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6296 10-03
128 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6295 04-05
127 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6286 06-14
126 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6278 05-03
125 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6250 12-16
124 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6204 05-13
123 no_profile 오원장 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 6062 05-30