2012-08-17 3 views
1

Symfony 1.4 Doctrine 1.2에서 음악 응용 프로그램을 만들고 있습니다. 내 레이아웃 헤더에서 페이 스북 API 메타 태그를 사용자 정의하기 위해 슬롯을 사용하고 있습니다. 예를 들어 노래 페이지를 탐색하면 해당 노래의 showSuccess에 다음과 같은 슬롯이 생겨 어떤 노래인지에 따라 레이아웃 헤더 메타 태그에 동적 정보가 채워집니다.Symfony 1.4의 슬롯에서 동적 정보 캐시를 비활성화하는 방법

<?php slot('fb_metaproperty_title') ?> 
<meta property="og:site_name" content="abc"/> 
<meta property="og:title" content="<?php echo $songs['song_name'].' by '.$songs['full_name'] ?>"/> 
<meta property="og:type" content="song" /> 
<meta property="og:description" content="This song is currently ranked <?php echo $songOverallRank?>th" /> 
<meta property="og:url" content="<?php echo $linktosongpage ?>"/> 
<meta property="og:image" content="<?php echo $images[0]?>"/> 
<?php end_slot() ?> 

문제는 내가 캐시가 켜져 있고 그 순위 값이 유효 기간이 있으므로 (이 자주 변경되는대로) $songOverallRank 변수가 슬롯에 캐시가 있습니다. 동일한 $songOverallRank 변수가 슬롯 바로 아래 (그러나 슬롯 외부)의 코드에서 최신 상태입니다. 어떤 이유로 슬롯 값이 캐시되고 오래된 것입니다.

수동으로 캐시 값을 제거하는 방법에 대한 심포니 문서를 확인 했으니 꽤 귀찮은 것 같습니다.

슬롯에 대한 캐시를 비활성화하는 간단한 구성이나 방법이 있습니까? 슬롯이 캐시되지 않고 변수가 나머지 템플릿 (정확히 최신 값을 가짐)과 완전히 동일하게 풀리도록하는 솔루션이 있습니까?

캐시가 view_cache/results_cache 인 경우 sfMemcacheCache이고 캐시가 sfPatternRouting 인 경우 APC가 유용합니다.

답변

0

문제점의 원인을 찾았습니다. 값을 캐싱하는 슬롯이 아닙니다. 실제로 메타 태그 정보를 캐싱하는 것은 Facebook이었습니다. 슬롯은 최신 값을 제공하지만 페이스 북 메타 태그는 페이스 북에 이전 데이터를 표시하고있었습니다. facebook 메타 태그의 캐시를 지우려면 수동으로 페이스 북 디버거 (linter)에 링크를 입력해야했습니다.

캐시를 지우기 위해 수동으로 각 링크를 입력하는 것은 확장 가능한 솔루션이 아니므로 페이스 북 메타 태그 안에 동적 데이터를 넣지 않기로 결정했습니다.

해결 방법보다 많은 해결책이 있습니다. 요구에 따라 자동으로 페이스 북 캐시를 지우는 법을 알고 싶습니다.

관련 문제