Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Partial Caching SS3


Reply


4 Posts   503 Views

Avatar
zenmonkey

Community Member, 532 Posts

28 August 2012 at 12:40am

I'm not sure if this is an issue with partial caching or my understanfing of it. If I put a cached block in my Layout/Page.ss it caches the first content loaded for that pagetype and not for that specific page. So any page of that pagetype shows the same content unless I flush the cache

Avatar
simon_w

Forum Moderator, 474 Posts

28 August 2012 at 9:28am

Have a look at the documentation for [url=http://doc.silverstripe.org/framework/en/reference/partial-caching]partial caching[/url].

If you don't provide a key that is specific to that page, then the cache block will be the same across pages.

Avatar
zenmonkey

Community Member, 532 Posts

25 October 2012 at 2:33am

Just wondering if useing something like <% cached $URLSegment, LastEdited %> is the best way to handle partial caching on pages or should the key be genreated from a cusotm function?

Avatar
Sean

Forum Moderator, 922 Posts

25 October 2012 at 2:40pm

Edited: 25/10/2012 2:42pm

Depends on what you're doing, but I find that most page types which are either pulling the current page's $Content, $Title etc, or from another page, or generating a menu, this key seems to work well:

<% cached 'mycachekey', ID, List(Page).max(LastEdited) %>
... content goes here
<% end_cached %>

The cache is invalidated by page ID, and whether any Page or subclass on the site has been modified.

Obviously if you have a lot of special template controls, or time based data inside the cacheblock, you'll want to generate the key from a custom function instead.

Sean