Static Cache created on demand

Author Message

Geraint Edwards

Monday 04 July 2005 2:47:21 am

First up - Static Caching is a great idea and, subject to a few minor problems with siteaccess ini files, works brilliantly.

However, publishing items which feed into a number of AlwaysUpdateArray entries can be very painful, especially if there are a number of translations to generate, as the static caches for all the different URLs (some of which may not even be valid) are generated. Again when an editor is adding a number of article/images etc. there is no point in updateing the static cache until they are finished.

Why not have the option of creating static caches on demand? In other words - publishing removes the old static cache files but doesn't create the new ones. Then the first time a request is made for a page (which should have a static cache, but doesn't) is made, the static cache is updated with the results of this request.

Geraint

Geraint Edwards

Monday 04 July 2005 2:52:34 am

In the same vein - there is probably no point creating static caches for "archived" versions of articles etc.

If an 'on demand' approach was implemented then the static cache for such material would only be created if it was accessed (which it may never be!).

Frederik Holljen

Monday 04 July 2005 5:37:48 am

This should be pretty simple. It is just a matter of adding a settings that controls if publish should create static cache when publishing. However, we opted not to make it this way because it sort of defeats the point of having the static cache in the first place (high traffic sites, no way to handle the additional load that simultanious requests to a new page can lead to).

Georg Franz

Monday 04 July 2005 5:56:51 am

Hi,

I suggest to introduce a feature where you can specify the classes for the static cache.

(example: I've an article, users can write comments. I show all comments at the end of the article, they are not clickable, there is no full view for the comments. So, there is no need to make static cache pages for each comment - full view.)

Another nice feature would be - as already mentionend somewhere in the bug reports by someone else - a possibility to specify the static cache depth by path for wildcards.

Example:
CachedURLArray[]=/news/technic/*;5
CachedURLArray[]=/forum/*;3

In that case the 1st path should be cached till a depth of 5, the 2nd one should be cached till a depth of 3.

-) Moved, renamed pages:
If you move or rename a page, a redirection or "404" page at the old location should be placed. Current behaviour: The static cache file is stored at all places. (Old locations and new location).

-) Static cache generation should be deferred to a cronjob. (Like the subtree cache block feature.

Best wishes,
Georg.

--
http://www.schicksal.com Horoskop website which uses eZ Publish since 2004

Geraint Edwards

Monday 04 July 2005 6:16:18 am

I'm not suggesting that this should be the default/only behaviour Frederik. It should be toggled by a switch in staticcache.ini. The overhead on the server should be less than the current publish driven cache generation and makes administration more tolerable.

I've written a few extra functions that implement this type of behaviour (works perfectly on my setup):
1. Taking the $templateResults from index.php
2. If !POST , staticcache and CreateCacheOnDemand are enabled
3. Pass $templateResults by reference to ezstaticcache
4. Use 2 new routines cacheURLWithResults and storeCacheWithResults (based on their namesakes) to store the results.

What is the best way to make these available for testing/comment?

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.

eZ debug

Timing: Jan 31 2025 01:21:12
Script start
Timing: Jan 31 2025 01:21:12
Module start 'layout'
Timing: Jan 31 2025 01:21:12
Module start 'content'
Timing: Jan 31 2025 01:21:12
Module end 'content'
Timing: Jan 31 2025 01:21:12
Script end

Main resources:

Total runtime0.0199 sec
Peak memory usage4,096.0000 KB
Database Queries3

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0045 588.1328151.2109
Module start 'layout' 0.00460.0029 739.3438220.6875
Module start 'content' 0.00750.0109 960.03131,001.7891
Module end 'content' 0.01840.0015 1,961.820337.9922
Script end 0.0198  1,999.8125 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.002311.4960140.0002
Check MTime0.00104.9636140.0001
Mysql Total
Database connection0.00094.752310.0009
Mysqli_queries0.00199.642630.0006
Looping result0.00000.044410.0000
Template Total0.00105.210.0010
Template load0.00084.093310.0008
Template processing0.00021.112810.0002
Override
Cache load0.00062.835310.0006
General
dbfile0.00105.016480.0001
String conversion0.00000.030040.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 1
 Number of unique templates used: 1

Time used to render debug report: 0.0001 secs