2017-05-15 2 views
0

내가 일하는 곳에서는 Zend Framework vs 1을 꽤 오랫동안 사용하여 페이지를 캐싱했습니다. 우리는 Zend Framework 2로 업데이트하려고 노력하고 있으며, ttl로 페이지를 캐시하는 방법을 잘 모르겠습니다.젠드 프레임 워크 2 캐싱

use Zend\Cache\PatternFactory; 

$cache = Zend\Cache\PatternFactory::factory('capture', array(
    'public_dir' => '/Users/mmaruri/Sites/Test/newsfeed', 
    'index_filename' => 'index.php' 
)); 

$requesturl = $_SERVER['REQUEST_URI']; 

//$cache->setOptions(new Zend\Cache\Pattern\PatternOptions(['storage' => 'filesystem', 'ttl' => 3600])); 

//create an id based on the uri 
$cache_identifier = md5($requesturl); 

$isCached = $cache->has($cache_identifier); 
$test = $cache->getOptions($cache_identifier); 

if($isCached) 
{ 
    $t = $cache->get($cache_identifier); 
    header('Status: 200', true, 200); 
    echo $t; 
    return; 
} 
else 
{ 
    $cache->start($cache_identifier); 
} 

저장소 어댑터와 캡처 캐시 패턴의 차이점은 확실하지 않습니다. 어떤 도움을 주시면 감사하겠습니다!

답변

0

문서에 명시된 바와 같이 :

CaptureCache 패턴은 HTTP 요청을 통해 반환하는 정적 리소스를 생성하는 데 유용합니다.

https://docs.zendframework.com/zend-cache/pattern/capture-cache/

그리고

에 저장 어댑터는 잘 알려진 어댑터 패턴을 사용하여 메모리 또는 파일 시스템과 같은 실제 스토리지 자원에 대한 래퍼입니다. https://docs.zendframework.com/zend-cache/storage/adapter/

그래서 당신은 이미지와 같은 정적 리소스에 대한 CaptureCache을 사용하면 같은 행의 목록에서 당신은 주어진 시간 (라이브하려면 시간) 캐시 할 데이터에 대한 스토리지 어댑터를 사용합니다 귀하의 데이터베이스.

+0

전체 페이지를 캐시하고 싶습니다. capture-cache 패턴을 사용하면 start 메소드를 통해이를 수행 할 수 있습니다. 어느 스토리지 어댑터에서도 비슷한 방법을 찾을 수 없습니다. – user2832792

+0

스토리지 어댑터는 전체 페이지를 저장하는 것이 아니며 개체를 저장하기위한 것입니다. 따라서 캡처 캐시를 사용하려면 두 가지 옵션이 있습니다. 1. 패턴을 사용하여 TTL 구현을 작성합니다. 2. 대안으로 https://github.com/bramstroker/zf2-fullpage-cache를 사용하면 현재 캡처 - 캐시 솔루션보다 복잡하지만 더 다양한 캐싱을 허용합니다. – Dymen1