Forums / Suggestions / Static Cache created on demand

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?

eZ debug

Timing: Jan 18 2025 11:14:41
Script start
Timing: Jan 18 2025 11:14:41
Module start 'content'
Timing: Jan 18 2025 11:14:41
Module end 'content'
Timing: Jan 18 2025 11:14:41
Script end

Main resources:

Total runtime0.1791 sec
Peak memory usage2,048.0000 KB
Database Queries141

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0080 588.8438180.8359
Module start 'content' 0.00800.0060 769.679797.8672
Module end 'content' 0.01400.1651 867.5469528.3281
Script end 0.1791  1,395.8750 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00382.0959200.0002
Check MTime0.00150.8322200.0001
Mysql Total
Database connection0.00130.733010.0013
Mysqli_queries0.130272.67181410.0009
Looping result0.00170.94821390.0000
Template Total0.164792.010.1647
Template load0.00080.447810.0008
Template processing0.163991.502510.1639
Override
Cache load0.00060.310910.0006
Sytem overhead
Fetch class attribute can translate value0.00090.526410.0009
XML
Image XML parsing0.00020.138610.0002
General
dbfile0.00442.4384200.0002
String conversion0.00000.003330.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

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

Time used to render debug report: 0.0002 secs