용어 설명/인터넷

브라우져에서의 캐쉬 기능

ssNi 2013. 8. 19. 22:02

브라우저에서의 캐쉬기능 이란


소스를 수정하다가 보면 리로드(F5)를 하지 않고 메뉴를 통한 이동이거나 주소표시줄을


클릭후 엔터를 쳐서 소스의 수정된 내용을 확인할때가 있다.


하지만 소스는 수정전의 결과만 나온다. 이는 클라이언트 브라우저에서 소스의 수정이


안되었다고 판단하여 이미 저장된 캐쉬파일을 여는 것이다. 새로 서버에서 데이타를


가져오는게 아니라 이미 저장된 캐쉬파일을 열어 속도를 향상시키는 기술이다.


사용자가 요청한 정보가 기존과 같다고 할때는 다시금 서버를 읽지 않고 클라이언트에


저장된 정보를 뿌려준다거나 하는 개념입니다. 사실 굉장한 동적인 페이지일때는


캐쉬 사용이 옳은 방법은 아닙니다. 하지만 메인 화면 정보는 사용자들이 접속했을때만


보기 때문에 캐쉬 처리를 해도 상관없을겁니다. 


여기서 캐시는 속도향상을 위해 다음번에 쓰여질 것으로 여겨지는 것을 메모리나 다른 곳에


미리 저장해서 다음번 엑세스때 미리 저장된 것을 체크해서 빨리 가져올 수 있도록


하는겁니다. 즉, 체크해서 있으면 빨리 가져와서 좋죠. 없으면 다시 새로 받으면 되고요.


(참고로 버퍼는 타매체(하드<->메모리,메모리<->CPU 등)간의 전송속도의 갭을


조금이라도 줄여보자는 취지로 만들어진겁니다.)


※ 리로드(F5) 무조건 새로운 데이타를 서버에서 가져온다.


※ 브라우저의 기본설정은 캐쉬를 한다.(보통 자동)


ex : 브라우져 --> 도구 -->인터넷 옵션 --> 저장된 임시 파일 


 

웹에서 캐시저장은 클라이언트의 하드공간(임시인터넷파일)에 저장되는것을 의미한다.

매번 서버에서 새로운 데이타를 전송받는법(캐쉬파일 참조안함)


 1. 서버측 언어 수정(헤더 조작)


서버측 언어에서 클라이언트 캐쉬를 하지 않고 매번 새로운 페이지를 보여주게 설정이

가능하다.


<?


  //# 헤더 함수앞에는 화면 출력이 있으면 안됩니다. 물론 <? 앞에 공백도 있으면 안됩니다.


  header("Cache-Control: no-cache"); //# 캐쉬를 사용 안함

  header("Pragma: no-cache");  //# 캐시를 사용 안함

?>

내용입니다1

내용입니다2

내용입니다3


 HTML 

<META http-equiv="Expires" content="-1"> 
<META http-equiv="Pragma" content="no-cache"> 
<META http-equiv="Cache-Control" content="No-Cache">

 

 

ASP   
<%   
Response.Expires = 0   
Response.AddHeader "Pragma","no-cache"   
Response.AddHeader "Cache-Control","no-cache,must-revalidate"   
%>  

 


JSP   
<%   
response.setHeader("Cache-Control","no-store");   
response.setHeader("Pragma","no-cache");   
response.setDateHeader("Expires",0);   
if (request.getProtocol().equals("HTTP/1.1")) 
        response.setHeader("Cache-Control", "no-cache"); 
%>  

 


PHP   
<?   
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . 'GMT');  // 캐쉬  업데이트  다시 저장
header("Pragma: no-cache");   
header("Cache-Control: no-cache,must-revalidate");   
?>  

 


WML  
<wml>  
<head>  
<meta http-equiv="Cache-Control" content="max-age=no-cache" forua="true"/>  
<meta http-equiv="Cache-Control" content="must-revalidate" forua="true"/>  
</head>  
<card>  
..  
..  
</card>  
</wml> 

 


JSP의 사용예   
<%@ page contentType="text/vnd.wap.wml"%>   
<%   
response.setHeader("cache-control","no-store"); // http 1.1   
response.setHeader("Pragma","no-cache"); // http 1.0   
response.setDateHeader("Expires",0); // proxy server 에 cache방지.   
%>   


2. 주소 호출시 get형식으로 뒤에 시간값(랜덤값)을 붙여줌

ex : <script src='xxx.js?time=랜덤값'></script>

ex : &t=<?=time()?>

랜덤값으로 인해 주소가 다르기 때문에 항상 새로 받아옵니다.


참고 사이트 : http://dumbung.com/main/bbs/board.php?bo_table=PHP_TIP&wr_id=52

'용어 설명 > 인터넷' 카테고리의 다른 글

네이버 신디케이션  (0) 2013.11.08
Syndication API  (0) 2013.09.17
컨텐츠 신디케이션(Content Syndication)  (0) 2013.09.17
자바스크립트, 자바 애플리케이션, 자바 애플릿 비교  (0) 2013.08.30
크롤링  (0) 2013.03.07