이미지 다시 다운될때 옵션을 어떻게 주면 disk or memory cache 되게 할 수 있나요?

이미지 다운로드시에 memory cache되는 것과 disk cache 되는 옵션은 무엇인가요?

서버에서 설정하는 것인가요? 클라이언트 호출시에 설정하는 것인가요?

좋은 하루 되세요

    2개의 답변이 있어요!

    • 안녕하세요~~

      브라우저를 통한 이미지는 기본적으로 브라우저 캐시에서 보여지게 됩니다.

      웹사이트 속도나 뭐 트래픽 절감을 위해서 이지요..

      허나! 같은 파일명의 이미지만 교체할 경우 캐시에 의해서 이미지가 바뀌지 않는것을 목격할 수 있는데요.

      이는 언어마다 차이는 있지만, response 의 header 를 통해서 제어를 할 수 있습니다.

      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("Pragma: no-cache");  
      header("Cache-Control: no-cache,must-revalidate");  
      ?>

      이런식으로 no-cache 를 설정하면 브라우저의 캐시에 영향받지 않도록 하실 수 있습니다.

      항상 행복하세요~

    • 다운로드라면 보통은 클라이언트에서 캐싱을 하게 됩니다.

      디스크 캐싱의 경우 속도가 조금 느리지만 많은 양의 이미지를 캐싱하기에 적합합니다.

      메모리 캐싱의 경우 속도가 빠르지만 많은 양의 이미지를 저장하기 위해서는 메모리가 많이 필요하게 됩니다.

      메모리에 저장한다면 OS에 따라서 재부팅 또는 프로그램 종료시 캐싱데이터가 날라가게 됩니다.

      이미지가 많고 변할일이 적다면 디스크 캐싱이 좋지만 이미지가 프로그램 종료가 되면 다시 쓸일이 없을 경우 속도가 중요한 시스템에서는 메모리 캐싱이 좋지 않을까 생각됩니다.

      캐싱 전략도 시스템 특성에 맞춰서 하시는게 좋습니다.