사용자 도구

사이트 도구


php:codeigniter:캐시_사용_관련

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
php:codeigniter:캐시_사용_관련 [2018/01/09 18:46]
endofsky [Kancrm에서의 Cache 사용 제약]
— (현재)
줄 1: 줄 1:
-====== 캐시 개요 ====== 
-===== CodeIgniter에서 제공하는 Cache ===== 
-  *  **View Cache** : view 노출 영역을 cache함 ​ 
-  * **DB Cache** : DB resultset을 cache함 ​ 
-  * **일반 Cache** : 캐시 라이브러리를 제공 사용자가 원하는 형태의 cache를 구현 할 수 있도록 함  
  
-===== Cache 사용 제약 ===== 
-  * **View Cache** : 사용자의 권한에 따라 result값이 다른 경우가 많이 있음. View Cache의 경우에는 URI의 정보를 cache 구분 key로 삼기 때문에 POST / GET 방식의 데이터 구분은 적용되지 않음(URI Segment 사용 시에는 적용 가능) ​ 
-  * **DB Cache** : 일반 query 실행 시에는 사용상에 문제 없음. 다만 한번의 SP호출 시 여러 resultset이 반환 되는 경우에는 사용 불가. CodeIgniter는 SP사용을 지원하지 않으며 더더욱 한 queryexecute에 여러 resultset이 반환 될 경우 구조적으로 CodeIgniter에서 제공하는 DB Cache를 사용 할 수 없음. 
- 
-===== 대안 제시 (Custom Cache) ===== 
-  * 이에 Kancrm 환경에 맞는 Custom Cache를 만들어 Cache Helper에 등록시켜놓음 
-  * **URI와 상관 없이 호출 method 및 파라미터 데이터를 통해 캐시를 구분 method 호출 후의 리턴 값을 저장**하기 때문에 대부분의 상황에서 DB Cache 대용으로 사용 가능함. 
-  * 아래 가이드를 참조하여 상황에 맞는 cache를 사용 할 것을 추천함 
- 
-====== 캐시 사용 가이드 ====== 
-===== 캐시 사용 시 고려사항(공통) ===== 
-  * 일반적으로 Cache는 자주 변경되지 않으며 서버 혹은 DB에 부하가 예상되는 경우에 사용됨. 
-  * 만약 자주 변경되는 내용을 캐시 할 경우 캐시 만료기간 동안 해당 변경내용이 적용되지 않는 다는 사실을 염두에 두어야 함 
-  * 또한, Call by reference 호출 구조의 경우(&​$param1 의 형태)에는 cache사용에 따른 side effect가 있을 수 있으며 
-  * 호출 시 시용되는 URI / 파라미터 이외의 환경에 결과 값이 종속되는 경우(예, 캐쉬 대상 내부 모듈에서 자체적으로 userSession 혹은 cookie 값, 시스템 시간을 참조하는 경우) 원하지 않는 결과 값을 받을 수 있게 됨을 주의해야 함. 
- 
-===== Custom Cache ===== 
-  * **적합한 사용 예** 
-    - Controller에서 Model 호출 시 결과 값을 캐싱 
-  * **적합하지 않은 사용 예** 
-    - CodeIgniter 환경의 class->​method 호출이 아닌 일반 function 호출 결과를 cache에 저장하고자 할때(사용 불가) 
- 
-  * **Definition** ​ 
-<code php> 
-mixed _cache( array $callPath, array $parameters [, int $timeout=3600] ) 
-</​code>​ 
- 
-    * **Parameters** 
-      * callPath : 호출Method 경로 (첫번 째 index값은 object type이어야 함, 주로 $this) 
-      * parameters : Method 호출 시 파라미터 
-      * timeout : 캐시 타임아웃 기간, 초 단위 (기본 값 1시간) 
-    * **Return Values** 
-      * Return : 해당 Method 호출 결과 (캐시 존재 시 저장된 캐시 값) 
- 
-  * **사용 예시** 
-    * 아래 예시와 같이 Controller에서 Model 호출 시 캐시로 전환 할 수 있음 ((해당 cache 모듈은 helper 모듈로 등록되어 있으며, autoload를 통해 자동 로드가 되기 때문에 해당 cache사용을 위해 controller에서 별도 load혹은 초기화 선언을 할 필요 없음. 모듈 위치 : ./​application/​helpers/​cache_helper.php 참조)) 
-    * Controller->​Method 호출이 아니더라도,​ CodeIgniter환경에서 Class->​Method 호출 시 모두 사용 가능 (예 :  Controller->​Controller 호출, Model->​Model 호출 등, 다만 해당 호출 구조는 권장하지 않음) 
-<code php 캐시 적용 전.php> 
-$data['​result'​] = $this->​erp_test_model->​get_price_change_history($param1,​ $param2 ); 
-</​code>​ 
- 
-<code php 캐시 적용 후(예시 1).php> 
-$data['​result'​] =  
-    _cache( ​ 
-          array($this,"​erp_test_model",​ "​get_price_change_history"​) 
-        , array($param1,​ $param2) 
-    ); 
-</​code>​ 
-<code php 캐시 적용 후(예시 2).php> 
-$data['​result'​] =  
-    _cache( ​ 
-          array($this,"​erp_test_model",​ "​get_price_change_history"​) 
-        , array($param1,​ $param2) 
-        , 30*60 // timeout을 30분으로 조정 
-    ); 
-</​code>​ 
- 
-===== View Cache ===== 
-  * **적합한 사용 예** (아래 내용에 모두 해당되는 경우) 
-    - 사용자의 계정에 상관 없이 동일한 결과값 도출 
-    - 페이지 조회 시 별도 파라미터가 필요하지 않음 (ex. 검색 기능 / 페이징 부재) 
-    - 혹은 모든 파라미터가 URI Segment로 구현되어 있음 (ex. /​user/​list/​3 ) 
-  * **적합하지 않은 사용 예** (아래 내용 중 하나라도 해당되는 경우) 
-    - 사용자 계정의 권한에 따라 결과 값이 다름 
-    - 페이지 호출 시 POST / GET 방식의 파라미터를 사용하는 경우 
-  * **사용 가이드** : http://​www.ciboard.co.kr/​user_guide/​kr/​general/​caching.html 
- 
- 
-===== DB Cache ===== 
-  * **중요 : 현재는 application/​config/​database.php 에 캐시 경로가 지정되어 있지 않아 사용 불가** 
-  * **적합한 사용 예** 
-    - SP를 사용하지 않는 호출 건 
-    - 혹은 SP를 사용하는 경우더라도 SP의 결과 값이 하나이고,​ 대상 method 안에서 [[03.프로그램_모듈:​02.framework:​01.사용가이드:​01.sp_호출관련|복수의 SP 호출 시 주의사항]]에 명시된 아래의 명령어를 하나도 사용하지 않은 경우 
-<code php> 
-$query->​close_result();​ 
-$query->​next_result();​ 
-$query->​next_result_array();​ 
-</​code>​ 
-  * **적합하지 않은 사용 예** (아래 내용 중 하나라도 해당되는 경우) 
-    - SP를 호출하고 있으며 결과 result set이 둘 이상인 경우 
-    - 대상 method에서 위에 명시한 명령어 중 하나라도 사용했을 경우 
-  * **사용 가이드** : http://​www.ciboard.co.kr/​user_guide/​kr/​database/​caching.html 
php/codeigniter/캐시_사용_관련.1515491185.txt.gz · 마지막으로 수정됨: 2018/01/09 18:46 저자 endofsky