Extra Form
PHP PHP 7.4
CMS Rhymix 2.x

$oCacheHandler = CacheHandler::getInstance('object');

 

if ($oCacheHandler->isSupport()) {

$object_key = 'object:1번:' . $document_srl . ':' . $object_key;
$cache_key = $oCacheHandler->getGroupKey('2번', $object_key);

 

$data = $oCacheHandler->get($cache_key);
if ($data) {
    return $data;
}

}

 

$data 가져오는 코드

 

if ($oCacheHandler->isSupport()) {
    $oCacheHandler->put($cache_key, $data, 900);
}

 

문서번호별로 캐시를 적용하기 위해 방법을 알아보고 있는데요.

 

문서번호는 $document_srl 를 사용한다고 가정한다면

 

질문1) string 1번,2번 의 의미와 규칙이 무언지 궁금합니다.

질문2) $object_key 에 마지막 :'string'  위 예시에서는 $object_key 변수를 사용했는데요 :블라블라 는 왜 필요한건가요??

 

 

  • profile

    1번 2번은 그냥 내 캐시를 다른 자료에서 쓰는 캐시와 구분하기 위해 임의로 넣은 문자열인 것 같습니다. 뒤에 붙인 $object_key도 해당 자료 만드신 분이 뭔가 구분할 필요가 있어서 임의로 추가한 것뿐, 결과적으로 문자열이 나오기만 하면 특별한 의미는 없습니다. 맨 앞은 자료명:으로 시작하는 것이 관례이긴 합니다만, 문서 구분을 위해 $document_srl이 들어가고 다른 자료에서 쓰는 것과 겹치지만 않는다면 형식은 상관없습니다.

     

    함수도 저렇게 지저분하게 쓰실 필요 없고, Group key 뭐시기 하는 것은 XE 시절에 만들어진 쓰레기이니 무시하셔도 됩니다. 캐시 쓰는 문법을 너무 복잡하게 만들어 놓으니 당연히 아무도 캐시를 안 쓰죠...

     

    Rhymix\Framework\Cache::set($키, $값, $유효기간);

    Rhymix\Framework\Cache::get($키);

    Rhymix\Framework\Cache::delete($키);

     

    이거 3개만 기억하시면 라이믹스 1.9 이후 모든 버전 호환됩니다.

  • profile profile

    그럼 $키 값에 제가 원하는 "특정할수 있는 문자열:문서번호" 이렇게만 가지게 하고 말씀 하신 함수를 쓰면 되는거네요. 나머지 복잡한 다른 문구 같은건 굳이 안써도 되겠군요.

  • profile profile
    $oCacheHandler = CacheHandler::getInstance('object');


    if ($oCacheHandler->isSupport()) {

    $cache_key = 'cache_name:' . $document_srl;

    $data = Rhymix\Framework\Cache::get($cache_key);
    if ($data) {
    return $data;
    }

    }


    $data 생성코드 ~~~


    if ($oCacheHandler->isSupport()) {
    Rhymix\Framework\Cache::set($cache_key, $data, 900);
    }

    이렇게 쓰면 될지 검토좀 해주세요.

    위젯에서 외부 api 사용횟수를 좀 줄이려고 합니다.
  • profile profile

    $oCacheHandler가 들어가는 줄은 모두 무의미하니 삭제하셔도 됩니다.

    $cache_key = 'cache_name:' . $document_srl;
    $data = Rhymix\Framework\Cache::get($cache_key);
    if ($data) {
        return $data;
    }
    ... $data 생성코드 ...
    Rhymix\Framework\Cache::set($cache_key, $data, 900);

  • profile profile
    $oCacheHandler 이것 마저 필요 없게 된거군요.. 감사합니다.
    짧아서 좋네요.

    XE는 굳바이~~
  • profile profile
    혹시 키구분하는 문자열에 한글이 들어가도 되나요?
    문서마다 캐싱하기 보다는 단어로 캐싱하는게 효율이 더 높아서 인데요.

    cache_name:가나 다라
    cache_name:가나-다라
    cache_name:가나%다라
  • profile profile
    글쎄요. 대부분의 캐시 방식이 임의의 유니코드 문자를 허용하긴 합니다만... 일부 캐시 방식에서는 다를 수도 있고, 특히 사용자가 입력한 검색어라면 한글이 아닌 이상한 특수문자가 끼어들거나 지나치게 길어서 문제가 될 수도 있으니 가능하면 md5(한글) 이런 식으로 영문+숫자만으로 이루어진 고정된 길이의 문자열로 변환해 주는 것을 추천합니다.
  • profile profile
    md5(한글) 이 좋은 방법이구요! 감사합니다.