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.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

General Questions /

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

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

Partial Caching SS3


Go to End


4 Posts   853 Views

Avatar
zenmonkey

Community Member, 545 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
(deleted)

Community Member, 473 Posts

28 August 2012 at 9:28am

Have a look at the documentation for partial caching.

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