Caching using environment variables with the 'keydependencies' parameter

In this example, we cache query results as datatables depending on a querystring variable. For each value of the querystring parameter 'ct', a new cache value is added.

Try this code with different contenttype numbers and see the resulting cache key differ.

Smartsite SXML CopyCode image Copy Code
<se:cache save="cached=this.iscached(), key=this.getcachekey()" 
    keydependencies="ct={request.query(ct, default=4)}" 
    resulttype="none" 
    trim="both" >
    <se:sqlquery sql="select nr, title from {channel.view()} where contenttype=?:ct" 
        resulttype="datatable">
        <se:parameters>
            <se:parameter name="params">
                <se:collection>
                    <se:member name="ct" type="integer">{request.query(ct, default=4)}</se:member>
                </se:collection>
            </se:parameter>
        </se:parameters>
    </se:sqlquery>
</se:cache>

Cached: {buffer.get(cached)} under key {buffer.get(key)}
{cache.get($key)}
Example Result CopyCode image Copy Code
Cached: true under key 2EF0CDFECD1983946B6A6815D4970F3A
SXMLDataTable (Name=sqlquery; Rows=312; Columns=nr,title)