2011-11-25 3 views
1
이 가능한 경우

임 확실하지 ...플러싱 개별 캐시 된 페이지 단편

나는 동적으로 테이블 행을 생성하고, 페이지의 fragment로 각 행을 캐시 할하고

.. 그런 다음

<cfloop index="i" from="1" to="10"> 
    <cfcache id="tableRow_#i#"> 
     <tr><td>..some stuff..</td></tr> 
    </cfcache> 
</cfloop> 

로 다른 코드에서 Applicaiton의 완전히 다른 부분에, 나는

<cfcache action="flush" id="tableRow_3"> 

는 사람이 있으면 말해 줄 수 .. 내가 'tableRow_2'를 세척 할 경우, 예를 들어 .. 개별 조각을 세척 할 수 있도록하려면세분성 유형이 가능하며, 그렇다면 최상의 접근 방식이 될 것입니다.

내가 찾을 수있는 가장 가까운 것은 <cflush expireURL="..">이지만 이것은 페이지의 모든 캐시를 플러시합니다. 페이지의 개별 캐시를 플러시 할 수 있어야합니다.

미리 감사드립니다. 당신이 처리 할 수 ​​

제이슨

답변

1

한 가지 방법은 응용 프로그램 범위 내 캐시 풀을 통해입니다. 예를 들어 :

<cfif not IsDefined("application.cachePool")> 
    <cfset application.cachePool = {}> 
</cfif> 

<cfloop index="i" from="1" to="10"> 
    <!---<cfcache id="tableRow_#i#">---> 
    <cfif not StructKeyExists(application.cachePool, "tableRow_#i#")> 
     <cfsavecontent variable="cacheTmp"><tr><td>..some stuff..</td></tr></cfsavecontent> 
     <cfset application.cachePool["tableRow_#i#"] = cacheTmp> 
    </cfif> 
    #application.cachePool["tableRow_#i#"]# 
    <!---</cfcache>---> 
</cfloop> 

그런 다음 나중에, 다른 응용 프로그램에서, 당신은 StructDelete를 사용할 수 있습니다 : 당신은 cfcache 태그는 "ID"속성이 CF9을 사용하는 경우

StructDelete(application.cachePool, "tableRow_3") 
+0

덕분에 치료를 Jake..worked .. hofo 안녕하세요, 감사가 추가 할 .. 내가 CF9을 – Jason

0

. 그래서 당신은 당신이 당신의 예에서 있었다 정확히 무슨 말을 할 수

<cfcache action="flush" id="tableRow_3">

+0

사용하고 있습니다. 나는 이것을 할 수있을 것이라고 생각했는데, 나는 이것을 시도했지만 오류가 발생했다. 나는 다음 번에 내가 거기에 있고 오류를 게시 할 연극을 할거야. – Jason