JotCache was developed in last three years as advanced solution for page caching in Joomla framework. This solution replaces standard System-Cache plugin and it usually works along enabled Global Cache Settings. JotCache consists from JotCache component allowing cache management and JotCache plugin.
New features of ver.3.x
- Cookies split allowing separate cache storage based on cookie name/value (and related module exclusion) - included into version 3.2
- Possibility to exclude bots (crawlers) requests from caching - included into version 3.2
- Recognition of mobile devices for browser split function (each browser group can have own cached pages based on plugin setting) - included into versions 3.1+
- Fast-changing dynamic modules on the cached web page can be refreshed with actual content during each user access. To the existing tagging of module positions on site template in the new version was added possibility to manage caching exclusion of template positions without changing the code of site template. All assigned template positions will be refreshed during each user access to cached web page - improved in version 3.2
- Possibility to select site URL requests which will force browser caching (locally on user side)
- In the management view was added listing and filtering of cached pages based on page URI.
and all major features from oldier versions of JotCache
- Cache management with faster opening on larger web sites. The cached files are presented with cached page titles and links, added more informations about cached page (browser type, language, non-routed query string), implemented items ordering, changed information about date/time of caching (incl. indication of expired or no more existing cache files).
- Exclusion of selected pages from page caching based on component, view and URL query parameters.
- Plugin functions for more powerfull autoclean (garbage collection) activity.
- Possibility to set different page caches based on user browser type. Standard options allows to have different caches for different major browsers and mobile devices groups. All other browser types are using common page cache.
- Cached page content can be compressed before saving into the cache. JotCache Plugin has option to compress (gzlib) cached pages before storing to the cache, therefore the web access to cached content is accelerated. Compressing function covers static (page) as well as dynamic module content.
- Possibility for site administrator to clean the page cache only for selected pages. It is possible to see the actual cached pages linked to used component and view.
- Fast check of cache operation on live site without disturbing other users. For easier overview of cache mechanism on frontend pages administrator can mark his/her browser access with specific cookie allowing later to display marked page and excluded template positions / module content solely to administrator.
Joomla CMS is using standard two different cache types for improving server response times :
- Global (core) cache for caching of selected parts (modules, component views, etc.) during rendering stage of request processing.
- Page cache dedicated to cache the entire web page for server output processing. In the plain CMS this function provides system plugin – System Cache.
In the following picture you can see same of major processing stages (prepare, render, finish) during Joomla CMS response processing and related cache activities in the case when JotCache plugin is used instead of System Cache plugin. Mostly render processing stage is very time consuming and for this stage is enabled Global core cache very helpfull.
But from the entire server response processing only a part of code (can be) is covered with global caching and therefore page caching which bypasses all the rest of output processing (as seen on next picture) for active (non-expired) cached web page can be in some multiple time faster as plain use of Global cache.
Opening JotCache component you have the possibility to look into one-to-one relation between cached pages and their original resource - title, original link, unrouted link (when Mark option is set on), component name, view, content id as well as parameters which have influence on separate caching – browser split (setting in JotCache plugin) and language set for cached page. Here it is necessary to remember that core of page caching with JotCache is server file system where all cached pages are stored as files. In the time of storing these files are also stored management data into database (table jotcache).
Some options for JotCache component can be set on JotCache Configuration form :
Three of shown options change Management View layout :
- Descriptor - alternating first main column showing either Page Title or Page URI string for given cached page
- Show cookies - can be used together with cookies exclusion (see Plugin settings) to show in additional table column which predefined cookies where active during page caching
- Show file hash - additional table column with file name of cached page (stored in Joomla cache directory) - link to related debug page Cached Content Debug View
Other options supports simplified operation with JotCache (see option tooltips).
Remarks to items expiration & synchronisation
After specified cache time stored files of cached pages are no more valid – they expire. Here are important two topics for proper management : removing of expired files from file system and database as well as keeping set of stored cached items in synchronisation between file system and database.
For fast responses during opening/filtering management activities no removing/synchronisation of expired items from file system and database is performed.
Expired items are marked in management view with item line in italics font and Created time value is embraced with :
- '()' for cache files expired and present in file system
- '##' for cache files no more present in file system.
Thus the administrator has fast overview about the cache status. For refreshing view to latest content and removing of obsolete items shall be used Refresh button on Cache Management toolbar.
Presented informations about cached pages
When calling page in Joomla front-end each unique URI string represents cached item when following major conditions are fullfilled :
- user is not registred in CMS (anonymous user)
For cached item is presented in JotCache management view :
- page title with link to original frontend page call (if implemented with SEF routing) or URI string based on settings in component Parameters
- page call target expresed as component, view, content id (some third parties extensions are not using view, content id but they have own parameters)
- time of item creation (server system time)
- language set for item content
- browser (presentation of browsers selected in plugin Browser split selection, inclusive mobile device groups)
- cookies (displayed only when Cookies Split in plugin parameters and Show Cookies in component Options are set) - see also Administration of JotCache plugin
- mark with link to original page query string (can be used for page exclusion) – it is shown only after clicking on toolbar button Set Mark after frontend pages recalls
Selecting of cache items for deleting from the cache
For selection of cached pages which shall be deleted from the cache you can use following methods :
- individual selection with checkbox on the most left position of displayed item row
- search by page title and then use checkbox(es) for selection
- group selection for all cached pages of selected component and/or view with appropriate selection boxes
- selection of marked pages using Set Mark button. Pressing this button creates setting of mark cookie in administrator browser during current session and then after all visited pages in site frontend shall be marked with visible 'Yes' in JotCache Management view. Using top selection box you can select only last visited page(s). 'Yes' mark has link to cached page with transparent URL query string (without any SEF transformations) which can be used for definitions of excluded pages (on the page shown after pressing Exclude on management view toolbar).
Exclusion of pages and modules from page caching
Components, views, parts of uri excluded from page caching
Starting with JotCache, ver.1.1 we have available powerfull tool for excluding components from caching process. On the toolbar of Cache Management it is located Exclude button which opens excluding form :
In this form are listed all components installed in Joomla CMS identified by Component Name and internal code (option) which is also one part of page URL.
You can exclude from caching entire component processing with checkbox Excluded checked and empty Views input line.
Excluding only specific views of the component you can do with checkbox Excluded checked and Views input line contains list of excluded views separated by comma. When you want to remove component from Exclude Component list then simply uncheck appropriate checkbox and press Apply or Save button.
Here is also possibility to exclude selected pages based on parameters of URL query string. It is generally known query parameters pairs (name and value) are located in the part of URL starting with ? character and each pair is separated with & character.
For exclusion purposes here is necessary to use parameters pairs of URL query in form as they are shown in mark 'Yes' link on JotCache management view (see previous paragraph). Parameter pairs are simply inserted into given component line in Exclude Views & Query Parameters input box :
This example is using parts of URL query string 'index.php?page=shop.browse&flypage=flypage.tpl&product_id=1&category_id=1&option=com_virtuemart&Itemid=56'
Multiple parameters pairs are separated with ',' character and can be intermixed with component views as described in previous section. When inserting or changing text in Exclude Views & Query Parameters input box (events 'click' and 'onchange') then automatic validation check on above described rules is performed. Only fully validated definitions are possible to save in database.
Module positions excluded
from page caching
In the Joomla 1.5 CMS framework each module is placed to template specific
position (see Administrator > Extensions > Module Manager / column Position. For graphical presentation see Administrator > Extensions > Template Manager,
click on used template name and then click toolbar button Preview).
Starting with JotCache, ver.3.0 module exclusions can be implemented with two different but compatible methods (they can be used each with other in the same time but not on the same template position) :
a.) Template positions excluded from caching can be set on new form :
On the form can be selected any frontend module position which is assigned and enabled in Module Manager.
The position which we like to exclude from caching must have non-empty input Style containing proper style name. The style name is very important because based on given style is used by parsing of modules located on specific template position.
Example for JA template - different styles applied on the same module :
Style names can be derived from template code or got from template designers.
In the input Optional style attributes are listed (when applicable) attributes in following format :
IMPORTANT NOTE : Starting with JotCache ver.3.2.2 is used additional JotMarker plugin for precise marking of exclusion areas. For proper operation this plugin have to be enabled and positioned as very first plugin in order of all system plugins.
b.) Marking template positions for caching exclusion by means of special comment tags on all Joomla templates which are using standard jdoc:include tags (inclusive Artisteer generated templates).
NOTE : Templates using non-standard template processing (e.g. Warp system of Yootheme) can be excluded only with method a).
In the Joomla template
each module position is tagged with following tag :
<jdoc:include type="modules" name="xxx" ... />
where xxx is position name.
To exclude specific module position from page caching it is necessary
to mark this position in template source (mostly index.php) with special JotCache HTML comment tags
- see example :
IMPORTANT CHANGE for JotCache ver.3.2+
jot tags have to be no more inserted into template as comments but as specific tags (please take care for 'space' before '>') :
<jot user2 s style="xhtml"><jdoc:include type="modules" name=user2" style="xhtml" /><jot user2 e >
Old form of jot tags <!-- jot user2 s ...>...<!-- jot user2 e --> is depreciated. JotCache 3.2 rewrites on-the-fly old tags to new ones when such case happens for cached pages after JotCache upgrade.
Text in the marking tags is separated with exactly one (1) space starting with
word jotfollowed by name_of_position
name_of_position - name of position as it is used
in jdoc tag
jot_flag - 's' for start marking, 'e' for end marking
params - any kinds of jdoc parameters separated with
Used jot tags have to close embrace the jdoc tag for proper operation.
Mark in your template only module positions which you like to be steady refreshed.
When page is cached then all JotCache mark tags are stored with cached content. During recall of cached
content the marked positions are replaced with module newest content.
Assignments for forcing local browser caching
Using local browser cache can extremely speed up user access to the content but it is necessary to take care for pages cached in this way because on locally cached pages browser IS NOT sending request to the server during entire local cache expiration time.
This type of caching is suitable for very static pages where time variation of actual content is not critical (sales conditions, informations about company, etc.).
Because on usual live sites only small range of pages fullfills these conditions the best way to implement browser caching is limitation of this feature on choosen URI path(s).
New form Browser Cache assignments :
allows to assign browser caching to all pages which URI starts with string set in definition input (Active for pages starting with URI). Each URI definition starts with '/' character.
Default browser cache expiration time is possible to set in Parameters.
NOTE : This function is only active when is set Use browser caching plugin parameter to YES.
Fast check of cache operation
Check in front-end
For proper marking of cached content you
need to have installed not only JotCache plugin but also the JotCache component. For page marking to put it in the operation it is necessary :
- in the JotCache plugin parameters to set Mark Caching to Yes
- in the JotCache component click on Set Mark button
With Set Mark button here it is sent marking cookie to your browser and then
you can see marked page title (with three @@@) when page is comming from cache
and steady refreshed module positions are marked with dashed red outline :
Check in backend
The marking can be used also for fast selection of pages which is necessary to remove from the cache. The recommended selection practice is following :
- check if list of active cached pages has any "Yes" in Mark column (use top combobox for selecting)
- reset the marks for given pages with ResetMark button (the button is shown after click on SetMark, when SetMark is on toolbar)
- click on SetMark button to start active marking
- open/reload pages in website frontend which you like to be marked
- Back in Administrator Cache Management click on Refresh button. You shall see in Mark column "Yes" for all in frontend opened/reloaded pages (you can select only marked pages with Select Mark combobox)
Selected files can be deleted as described in management view section.
Especially when checking module template position exclusion can be helpfull debug feature of JotCache (enable in Options parameter Show file hash) which allows fast allocate specific cached page and to display in source form :
In the source code of the cached page can be searched (with browser find function) for presence of exclusion jot tags, etc. For fast overview is recognized number of position exclusions shown in text over the textbox.
Administration of JotCache Plugin
Because JotCache Plugin is advanced replacement of System - Cache it is necessary to disable system cache plugin in Administration > Extensions > Plugin Manager.
Open in Plugin Manager JotCache plugin, review parameters and set their values to required operation mode :
1. Browser caching (Yes) - Web server is forcing the site visitor browser to local caching of sent content. USE with high care. Setting this parameter to 'Yes' caches all pages on user browsers with NO reloading from the site server during browser cache lifetime.
Browser Cache lifetime is set for each top URI path on component special form.
Web page is local cached in browser and it remains x minutes valid (during this time browser shall not call any more server for specific page loading but page is recalled from local cache). This behavior can be overridden pressing Reload button on the browser toolbar. Then the browser calls again server for page loading.
2. Cache lifetime - Cached web page remains x minutes in page cache stored
3. Compress cached content (Yes) - In cached content are whitespaces removed and then the content is compressed (gzlib)
4. Mark caching (Yes) - Condition for displaying Set Mark in JotCache component (for presentation of front-end cache marking and backend check have to be both conditions met : Plugin Mark caching=Yes and Component Set Mark=On)
5. Cache Auto Clean – This function is enabled by setting of positive integer x representing number of minutes. Automatic cleaning process starts initially postponed each x minutes and it performs deleting of expired cache files from the server file system. Cleaning activity is limited to max. 500 ms duration. Remaining expired cache items are then deleted during next user requests each time with max. 500 ms duration until all expired items are deleted from the cache. Short overview about the cleaning process can be gained with JotCache Clean Log parameter set to Yes.
6. Autoclean Mode (Fast, Medium, Slow) – controlling autoclean behavior and usage of server memory for this task. Autoclean takes segment of files stored in the cache and process this segment in one internal run. In Fast mode are used only several segments and processing is fast with higher usage of internal memory. With Medium or Slow setting are these segments smaller and smaller but processing is slower. Recommended for middle sized web sites is Fast setting, for large ones you have to experiment with Medium/Slow settings.
7. Clean Log (Yes) – Logging function switched on is allowing to have look into cache auto clean activity. Log is created in Joomla top directory 'logs' with the name ' plg_jotcache.autoclean.log.php'. Each cleaning run is represented with one log line in this format :
date time server IP
2010-12-04 12:40:50 127.0.0.1
interrupted on : (x|ffffffffffffffffffffffffffffffffffffffffffff) last deleted : y
where x – represents number of last processed segment
f..f – represents name of last processed cache file
y - represents number of deleted pages
When clean run process all items without interruption then only plain information about deleted files is stored in log. The best autoclean mode setting is with small number of interruptions taking into account reasonable internal server memory usage.
8. Browser split – Many Joomla templates systems are using separate templates for different browser types . With splitted cache storage space for different browser types you can avoid unacceptable mixing of unproper templates to site users (cached page content is not rendered when non-expired page exists in the cache). Select in the multiselect input box the browser types for which one it is necessary to have separate cache space (unselect when necessary with Ctrl+click on item). For MS Internet Explorer you can use either common 'IE' selection for all versions of this browser or specific version according the selection item.
Setting for mobile devices
If on the web site are used special templates for content presentation on mobile devices which are different from layout of desktop browsers then it is possible to choose two separate caching spaces - for tablets and for phones. Select Phone selection alone when available special template is adjusted for presentation on mobile phones (small width, special navigation, etc.)..
9. Cookies Split – This input box is used to distinguish pages with same URL and browser access but with different cookie values. Cookies split is allowing separate cache storage for each unique set of cookie name/value definitions.
For forcing cookies split it is necessary to set each one cookie definition per line into this input box. Cookie definition consists from following parameters line definition :
For correct cache operation exclude (in JotCache component) also module locations which are using here definied cookies.
After correct setting of cookies split are the cookies which were recognized during page caching shown on component Management view :
Note : Show cookies parameter in JotCache component Options have to be set to Yes.
If cookies are related to operation of specific module then it is necessary to exclude template location of this module on component Position Exclude page :
10. Bots Exclude - If enabled then visiting crawlers (bots) shall access non-cached pages - important in some cases e.g. image lazy loading
11. Global exclude – USE ONLY IN THE CASE WHEN JOTCACHE COMPONENT EXCLUDE IS NOT ENOUGH.
In some very rare cases can Joomla request contain 'virtual' component link which does not belongs to installed components stored in the Joomla database. In such case when you need to exclude specific links and/or pages from caching here is possibility to define parts of URL (key=value pair) which are excluded.
After saving JotCache parameters check if the JotCache plugin is enabled and located as last item in system plugins list (if it is not then correct status and items order).
Usage of JotMarker plugin
JotMarker system plugin serves as helper for precise marking of template position areas which are needed during modules refreshing on given position of cached web page. JotMarker is used and automatically installed during installation of JotCache extension starting with version 3.2.2.
In the installation time is JotMarker set as first plugin in group of Joomla system plugins in enabled state. These settings are necessary for correct operation of module template position exclusions. When during installation of any 3rd party system plugin is JotMarker position changed then manually set again its position to first one in group of Joomla system plugins.
No other settings on JotMarker plugin as described are required. Module exclusion is described in another part of this Help.
JotCache installation procedures
Recommended install procedure :
1. Install JotCache from file com_jotcache_3.x.x_j1X.zip via Administrator > Extensions > Install/Uninstall / Upload Package File. During installation process are installed both parts of JotCache solution : JotCache component and JotCache plugin. JotCache plugin is during installation set to the last position in order of Joomla system plugins with state disabled.
2. Open Plugin management : Administrator > Extensions > Plugin Manager / in Select type put 'system' and disable 'System - Cache' (when enabled) and open JotCache edit. Set plugin parameters as you like and save it with plugin enabled. CHECK IF JotCache plugin IS LOCATED AS LAST in order of system plugins. If not change order in requested way.
3. Reset the old cache content with Tools > Clean Cache select all items and press DELETE button.
4. When you are using System SEF plugin then JotCache plugin have to follow the System SEF plugin in the Joomla plugin list (adjust order in Extensions > Plugin Manager, the best position for JotCache is the last item in the list)
Upgrade from old versions
Simply install new version of JotCache as described in 'Installation' over old one. This procedure applies also in the case when you are upgrading from JotCache version 1.x or 2.x.
IMPORTANT NOTE : When upgrading from old versions to JotCache 3.2+ check all module exclusions because starting with this version was module exclusion mechanism significantly changed. JotCache 3.2+ during installation itself performs necessary upgrade in database (creating exclusion type 4 in database table jotcache_exclude when old version had some active template location exclusions) and performs on-the-fly transformation for pages cached in old version.
Upgrading/reinstallation does not change the content of jotcache tables in the database.
With JotCache uninstallation you remove all related database tables, component and plugin files. Uninstallation procedure is following :
1. Uninstall JotCache Component (when installed) : Administrator > Extensions > Install/Uninstall > Components check JotCache and press Uninstall button.
Now are all parts of JotCache removed from the application and database.