Cache Chooser Add-On
- creates cache from Topics and decides, if a Topic needs to be rerendered. TWiki users can have an influence on the caching time. CacheChooserAddOn takes account to TWikis content security.
Usage
- After installation invisible for TWiki users.
- Users may need to use a refresh button to rerender a Topic with content genereated by variables.
- Users may set the NOCACHE variable to refuse caching of topics with no static content.
- User can set the timeout of a page to be automatically be rerendered after time T.
How does it work
- The chooser decides by the following facts, when to render a Topic to cache:
- date of original Topic file is newer than file in cache
- in Topic
DENYTOPICVIEW
or ALLOWTOPICVIEW
are empty
- in
WebPreferences
of a web, DENYWEBVIEW
and ALLOWWEBVIEW
are empty.
- the
NOCACHE
variable is NOT set, neither in the Topic nor in WebPreferences
- the
CACHE
variable is set with a value.
- No QUERY_STRING options are specified, excepting
?skin=plain
Advantages - Disadvantages - When better not using caching
- Caching is ideal for static content
- In all other Topics and Webs which contain content that is generated by variables from actual TWiki content and require to be most actuell, caching shoud be disabled by setting the NOCACHE variable or at least set a short refresh-time with the CACHE variable.
- Caching cannot and is not supported when User Authentication is used by restricting viewing Topics or Webs.
- Caching is not supported, when QUERY_STRING options are specified to avoid conficts.
Speed Advantages
Time | Experiment |
40 ms | cached Topic with no CACHE or NOCACHE variables in |
76 ms | cached Topic with CACHE or NOCACHE variables in |
3358 ms | rerended Topic with cache chooser |
3276 ms | directly rendered Topic without cache chooser |
82 ms | overhead through cache chooser programm |
The measurement was done on a 700 MHz PC. In fact the little overhead of about 80 ms when rendering via the cache chooser does really not take much into account of the over 3 seconds rendering time, while the speed of Topics from cache is relatively really fast, especially for Topics which need not processed for variables again.
Stop Caching of a Topic or Web
- For a Topic:
- include the exact string:
Set NOCACHE
somewhere in the document.
- You may hide it by
<!-- Set NOCACHE -->
- For a entire Web:
- include the exact string:
Set NOCACHE
in the WebPreferences
of that web.
Forcing Caching of a Topic in a Non-Cached Web
That overwrites the NOCACHE variable in the Web, but will not overwrite User Authentication.
Cache Timeout of Topics
- To define in
WebPrefrerences
in each Web
- To define in each Topic
- Order is: Topic beats Web
If the CACHE variable has a time information included instead of the word
cache
, it will rerender the Topic after timeout is reached. The format includes one string after the equal sign that has to be separated by one space on each sides! The format includes m=minutes, h=hours, d=days, w=weeks and M=months. Several time settings can be set together and are separated by "
-
" to build up one string! The letters follow directly after the number of time. Examples:
- Set CACHE = 1d
- Set CACHE = 5d-2w
- Set CACHE = 1h-30m
- Set CACHE = 1M-2w-5d-6h-3m
There are limitations in specifiable numbers:
- m = 1-59
- h = 1-29
- d = 1-6
- w = 1-9
- M = 1-19
Especially for the
CalendarPlugin the option
daily
will cause the Topic rerendered for the actual day to display the calendar properly, so set:
User Authentication
- Due to security reasons, caching is disabled, when User Authentication is used in a Web or Topic.
- When in a Topic
Set ALLOWTOPICVIEW = Main. ...
or Set DENYTOPICVIEW = Main. ...
is set or
- when in the the
WebPreferences
of a web Set ALLOWWEBVIEW = Main. ...
or Set DENYWEBVIEW = Main. ...
is set, followed by a user or group, caching is disabled. If activated later, the copy in the cache will be removed.
- Attention! : Be aware to keep the exact syntax as above! There has to be exact one space before and after the equal sign, otherwise Security may fail!
- Wrong would be
Set ALLOWTOPICVIEW =Main.TWikiGuest
- Correct is:
Set ALLOWTOPICVIEW = TWikiGuest
Add-On Installation Instructions
Note: You do not need to install anything on the browser to use this add-on. The following instructions are for the administrator who installs the add-on on the server where TWiki is running.
- Download
CacheChooserAddOn.zip
ZIP file from TWiki:Plugins.CacheChooserAddOn
- Unzip
CacheChooserAddOn.zip
in your twiki installation directory. Content:
File: | Description: |
data/TWiki/CacheChooserAddOn.txt | Add-on topic |
data/TWiki/CacheChooserAddOn.txt,v | Add-on topic repository |
bin/cache | Add-on script |
bin/render | original view script |
bin/view | link to cache |
bin/refresh | link to cache |
cache/.htcacherr.log | log file of wrong CACHE variable entries |
- Installationsteps:
- copy cache to TWiki bin/
- mv view to render
- ln -s cache view
- ln -s cache refresh
- mkdir cache in TWiki directory, if web-server has no writing permissions there.
- Add in your TWiki-skin a refresh button, e.g.:
- Change
/your/twiki/template/view.tmpl
to have a refresh function,
e.g. next to the the "More" link:
%TMPL:P{"sep"}% <a href="%SCRIPTURLPATH%/refresh%SCRIPTSUFFIX%/%WEB%/%TOPIC%">Refresh</a>
- Update :
302 Moved
messages cause wrong Localisation
redirect, when view script is called with different name. Workaround is to use the ?refresh=cache
option instead of the link refresh
for the refresh button, e.g.: %TMPL:P{"sep"}% <a href="%SCRIPTURLPATH%/view%SCRIPTSUFFIX%/%WEB%/%TOPIC%?refresh=cache">Refresh</a>
- Test if the installation was successful:
- open Topics in your TWiki web and check, if directory tree and Topic-cache pages are created in the cache directory.
- Protect cache dir in httpd.conf or with .htaccess by
deny from all
Add-On Info
Related Topic: TWikiAddOns?
--
TWiki:Main/JensRoeder - 30 Mar 2005