Coldfusion 刷新单个缓存页片段

Coldfusion 刷新单个缓存页片段,coldfusion,cfcache,Coldfusion,Cfcache,我不确定这是否可能 我正在动态生成表行,并希望将每一行缓存为页面碎片。。比如 <cfloop index="i" from="1" to="10"> <cfcache id="tableRow_#i#"> <tr><td>..some stuff..</td></tr> </cfcache> </cfloop> ……一些东西。。 然后在另一段代码中,在应用程序的一

我不确定这是否可能

我正在动态生成表行,并希望将每一行缓存为页面碎片。。比如

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

……一些东西。。
然后在另一段代码中,在应用程序的一个完全不同的部分,我希望能够刷新单个片段。。例如,如果我想刷新“tableRow_2”

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

有谁能告诉我这种粒度是否可行,如果可能,最好的方法是什么

我能找到的最接近的是
,但这会刷新页面中的所有缓存。。我需要能够刷新页面中的各个缓存

非常感谢


Jason

处理此问题的一种方法是通过应用程序范围缓存池。例如:

<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>

处理此问题的一种方法是通过应用程序范围缓存池。例如:

<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>

如果您使用的是CF9,那么cfcache标记有一个“id”属性。因此,您可以准确地说出示例中的内容:


如果使用CF9,则cfcache标记具有“id”属性。因此,您可以准确地说出示例中的内容:


你好,霍夫,谢谢你的加入。。我使用的是cf9。我想我也能做到这一点,我确实尝试过这个,但出现了一个错误。下一次我在那里的时候,我会有一个剧本,并公布错误。嗨,霍夫,谢谢你的加入。。我使用的是cf9。我想我也能做到这一点,我确实尝试过这个,但出现了一个错误。下一次我在那里的时候,我会有一场比赛,然后公布错误。。