Forum OpenACS Q&A: Re: Xowiki Categories Includelet Rendering Connundrum

Collapse
Posted by Richard Hamilton on
No wonder I'm having trouble! Even when I disable the page fragment caching for the categories includelet, the page is still cached! 😟

{{categories -decoration none -cacheable false -style samplemenu -order_items_by page_order,asc}}

The only way I can get changes to be reflected in the delivered output is to create a new revision.

Does anyone have any idea why "-cacheable false" is not working? Is there any other way to disable the page fragment caching while I work on my new TreeRenderer?

Regards
Richard

Collapse
Posted by Gustaf Neumann on
The parameter "cacheable" is not setable on the includelet instance level, but on the includelet class level. This means that you have to alter in xowiki/tcl/includelet-procs.tcl the value of this flag from "true" to "false":
  ::xowiki::IncludeletClass create categories \
      -superclass ::xowiki::Includelet \
      -cacheable true -personalized false -aggregating true \
      -parameter {
        {title "Categories"}
        {parameter_declaration {
          {-tree_name ""}
          {-tree_style:boolean 1}
          {-no_tree_name:boolean 0}
          {-count:boolean 0}
          {-summary:boolean 0}
          {-locale ""}
          {-open_page ""}
          {-order_items_by "title,asc"}
          {-style "mktree"}
          {-category_ids ""}
          {-except_category_ids ""}
          {-allow_edit false}
          {-ordered_composite}
        }}
      }
The values under "parameter_declaration" are the ones that can be specified on a per-includelet instance level (when the includelet is instantiated, e.g. between curly brackets).

Note that when you change this definition, you should flush the page fragment cache via http://YOURHOST/xotcl/cache?cache=xowiki_cache (or restart the server).

Some more background: xowiki has various kinds of caches. The categories includelet can be cached in the so called "page fragment cache". The xowiki infrastructure supports various kinds of caching for page fragments, which can be specified as follows

  • cacheable: turn caching on/off for this includelet
  • aggregating: cached page fragments are flushed, when items in this instance are added/edited/deleted. This is useful, when altering content item in this instance might cause a different output from this includelet (this is the case for the categories includelet)
  • localized: different cached values are kept for every locale; useful, when an includelet returns different values depending on the locale
  • personalized: different cached values are kept per user-id; useful, when an includelet returns different values per user.
To understand caching, it helps to look at the cached values in the page fragment cache as indicated above.

Hope this helps

-gustaf neumann