질문/조언질답게시판
Extra Form
PHP PHP 8.0
CMS Rhymix 2.x

콘텐트 위젯에서 RSS를 읽어오는데, RAND 함수를 통해 노출되는 게시글의 순서를 페이지 로딩시마다 변경하고 있습니다.

 

RSS를 읽어올때 가끔 지연이 발생하여 사이트가 먹통이 되는 현상이 발생하는데요

 

그에 대한 대책으로 위젯 캐시 적용을 고려해보았지만 그럴경우 RAND함수 부분이 작동하지 않아 모든 회원이 1분동안 같은 내용을 보게 되더라구요

 

혹시, RSS파일을 한번 읽어오면 1분동안은 더이상 읽어오지 않고 이미 읽어온 RSS데이터 기반으로 RAND하게 출력하는 방법이 있을까요?

 

즉 캐시를 위젯출력이 아니라 RSS리드 부분에 걸고 싶은데 

 

개발자가 아닌 비개발자 운영자라 ㅠㅠ 겨우겨우 XE 스킨 조건문 정도나 독학한 정도라서 매우 어렵네요.. ㅠㅠ

 

제 짧은 식견으로는 하단의 getRSS부분에 캐시 코드를 넣으면 될것 같긴 합니다.

 

function getRssItems($args)
{
$content_items = array();
$args->mid_lists = array();

foreach($args->rss_urls as $key => $rss)
{
$args->rss_url = $rss;
$content_item = $this->_getRssItems($args);
if(countobj($content_item) > 0)
{
$browser_title = $content_item[0]->getBrowserTitle();
$args->mid_lists[] = $browser_title;
$content_items[] = $content_item;
}
}
// If it is not a tab type
if($args->tab_type == 'none' || $args->tab_type == '')
{
$items = array();
foreach($content_items as $key => $val)
{
foreach($val as $k => $v)
{
$date = $v->get('regdate');
$i=0;
while(array_key_exists(sprintf('%s%02d',$date,$i), $items)) $i++;
$items[sprintf('%s%02d',$date,$i)] = $v;
}
}
if($args->order_type =='asc') ksort($items);
else krsort($items);
$content_items = array_slice(array_values($items),0,$args->list_count*$args->page_count);
// Tab Type
}
else
{
foreach($content_items as $key=> $content_item_list)
{
$items = array();
foreach($content_item_list as $k => $content_item)
{
$date = $content_item->get('regdate');
$i=0;
while(array_key_exists(sprintf('%s%02d',$date,$i), $items)) $i++;
$items[sprintf('%s%02d',$date,$i)] = $content_item;
}
if($args->order_type =='asc') ksort($items);
else krsort($items);

$content_items[$key] = array_values($items);
}
}
return $content_items;
}

 

  • profile

    https://www.poesis.org/tools/modulegen/

    모듈 생성기에 모듈을 만들어서 해당 모듈에서 캐시를 이용하는 방법에 대한 팁을 얻을 수 있습니다.

    해당 모듈생성기를 통해서 해당 캐시메소드를 활용해보세요.

     

    해당 모듈생성기를 생성하여 내부 코드를 그대로 복사하여 사용하시는 모듈에 class에 추가하신다음 그 메소드를 호출하는 방식으로 구현하시면 되요.

     

    기초적인 지식이나 그런부분은 따로 공부하셔야 합니다.

  • profile profile
    감사합니다...!