• Save
eZ Publish Caching Mechanisms
Upcoming SlideShare
Loading in...5
×
 

eZ Publish Caching Mechanisms

on

  • 9,596 views

Slides from the eZ Global Partner Conference 2012 (LISBON, PORTUGAL) ...

Slides from the eZ Global Partner Conference 2012 (LISBON, PORTUGAL)

Advanced & spicy details about the eZ Publish Caching mechanisms : ini cache, compiled templates, viewcache, template-block caches...

Statistics

Views

Total Views
9,596
Views on SlideShare
9,262
Embed Views
334

Actions

Likes
13
Downloads
0
Comments
2

11 Embeds 334

http://confluence.kaliop.net 71
http://www.kaliop.com 61
http://www.kaliop.fr 60
http://blog.kaliop.com 48
http://www.kaliop.co.uk 43
https://booster-sqli.bluekiwi.net 22
http://www.kaliop.vfaisse.php.loc 15
http://www.twylah.com 8
http://version5.kaliop.com 4
http://translate.googleusercontent.com 1
http://www.kaliop.vfaisse.validation.kaliop.net 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

eZ Publish Caching Mechanisms eZ Publish Caching Mechanisms Presentation Transcript

  • eZ Partner Conference in Lisbon. Feb 9theZ Publish Caching Mechanisms // SPICY DETAILS Gilles Guirand CTO Kaliop / platinum partner eZ Publish board member @gandbox
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS SUMMARY CONTEXT INI CACHE TEMPLATE COMPILATION VIEWCACHE CACHE-BLOCK EXPIRY.PHP FILE EZCACHE.PHP SCRIPT QUESTIONS 2 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS SUMMARY CONTEXT INI CACHE TEMPLATE COMPILATION VIEWCACHE CACHE-BLOCK EXPIRY.PHP FILE EZCACHE.PHP SCRIPT QUESTIONS 3 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CONTEXT Common questions ( high trafic ) : ➔Is it possible to never expire the ENTIRE viewcache ? … and which actions actually expire the ENTIRE viewcache ? ➔ Is it possible to reduce the I/O (template-blocks) ? ➔ Is it possible to expire a specific set of viewcache ? ➔ Is it possible to expire a specific set ot template-block files ? ➔ Is there a best practice to PUSH a daily templates update ? 4 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CONTEXT Final questions : ➔ How all these cache mechanisms really work ? … I mean in details... algorithms, I/O, triggers, exceptions, undocumented features & settings, unknown bugs, unknown fixes... Final solutions : ➔ Dont trust the documentation : READ THE KERNEL / TEST THE KERNEL... ( be brave ) 5 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CONTEXT Knowledge exploitation / reuse : ➔ Write a FR document (46 pages) : mix between a documentation & tuto ➔ Publish it on differents supports (FR + EN) ➔ Split the article into 4 parts : 1 2 3 4 INI VIEWCACHE Template- expiry.php Tpl compilation block ezcache.php bench 6 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CONTEXT Publication schedule : FEB MARCH APRIL MAY JUNE 1 2 3 4 FR 1 2 3 4gandbox.fr FRshare.ez.no EN 1 2 3 4 ➔ (depending of translation delay) 7 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS SUMMARY CONTEXT INI CACHE TEMPLATE COMPILATION VIEWCACHE CACHE-BLOCK EXPIRY.PHP FILE EZCACHE.PHP SCRIPT QUESTIONS 8 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS INI CACHE When eZ generates the INI cache ? ➔ On the fly (if the cache file does not exist) – from an API call (ezini PHP class), a template call (ezini operator) ➔ By default, eZ automatically check if an INI file has been changed or not, depending of this setting (config.php) //define( EZP_INI_FILEMTIME_CHECK, false ) ; /* Set EZP_INI_FILEMTIME_CHECK constant to false to improve performance ( 10% ~ 15% on I/O ) by not checking modified time on ini files. You can also set it to a string, the name of a ini file you still want to check modified time on, best example would be to set it to site.ini to make the system still check that but not the rest. */ 9 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS INI CACHE How eZ stores the INI cache ? ➔ var/cache/ini ( and not /{varDir}/ini ), not clusterized ➔{inifilename}-{hash}.php design-677247a49e428aa083741 1b52777b920.php design-704216b4d0e3ea68c09742504bb366c8.php design-7333039e7e19aa41 1f8dd01836555861.php md5 FileName / RootDir / DirectAccess / overrideDirs / internalCharset 10 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS INI CACHE How to expire the INI cache ? ➔php bin/php/ezcache.php --clear-id=global_ini ➔ Remove var/cache/ini ➔php bin/php/ezcache.php --clear-tag=ini ➔ Remove var/cache/ini & var/cache/active_extensions_{hash}.php ➔php bin/php/ezcache.php --clear-id=ini ➔ Nothing (bug) : try to recursively delete INI files in {varDir}/ini 11 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS INI CACHE How to expire a set of INI files ? ➔ Not possible with eZ Scripts ➔ Possible & safe using a command line ➔ TEST BEFORE : find var/cache/ini -name "site-*" ➔ RM : find var/cache/ini -name "site-*" | xargs rm 12 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS INI CACHE How to not compile the INI value ? lib/ezutils/classes/ezini.php function eZINI( $fileName = site.ini, $rootDir = , $useTextCodec = null, $useCache = null, $useLocalOverrides = null, $directAccess = false, $addArrayDefinition = false, $load = true ) { ... } Dynamically load the INI values inside your compiled templates : site.ini [eZINISettings] / DynamicTemplateMode=enabled OR Ezini operator → dynamic parameter 13 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS SUMMARY CONTEXT INI CACHE TEMPLATE COMPILATION VIEWCACHE CACHE-BLOCK EXPIRY.PHP FILE EZCACHE.PHP SCRIPT QUESTIONS 14 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS TPL COMPILATION What for ? ➔ Compile your .tpl files to .php files ➔ Reduce the RAM / CPU (use the stored compiled version) How to set ? site.ini [templatesettings] ➔ TemplateCompile=enabled ➔ Store compiled version {varDir}/cache/template/compiled/ ➔ NodeTreeCaching=enabled ( disabled by default ) ➔ Store pre-compiled version {varDir}/cache/template/tree/ Common mistake ➔ TemplateCache=enabled → template-block 15 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS TPL COMPILATION DESIGN {varDir}/cache/template/tree {varDir}/cache/template/compiled page_mainarea.tpl {hash}-page_mainarea.php page_mainarea-{hash1}.php NodeTreeCaching=enabled page_mainarea-{hash2}.php ( disabled by default ) page_mainarea-{hash3}.php Why eZ generates several compiled files for the same .tpl? 16 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS TPL COMPILATION How eZ stores the final compiled files ? {VarDir}/cache/template/compiled/, not clusterized Filenames : {templatename}-{hash}.php page_head-49f4458d0b68aec3cf2de63a6918fd61.php page_head-ec3cf2de63a6918fd6149f4458d0b68a.php 17 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS TPL COMPILATION How eZ calculates the hash ? $sharedTemplates = false {VarDir}/cache/template/compiled/ Filenames : {templatename}-{hash}.php pagelayout-49f4458d0b68aec3cf2de63a6918fd61.php Md5( filepath ) / internalCharset / language / useFullUrlText / accessText / pageLayoutVariable / indexFile / extraName /layout/set/... 18 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS TPL COMPILATION How eZ calculate the hash ? $sharedTemplates = true {VarDir}/cache/template/compiled/ Filenames : {templatename}-{hash}.php pagelayout-aec3cf2de63a6918fd6149f4458d0b68.php Md5( filepath ) / language No more siteaccess inside the key... Ezini operator → dynamic parameter 19 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS TPL COMPILATION How to pre-compile a set of template files (to avoid : on the fly generating) ? ➔ Force the compilation of 2 template files php bin/php/eztc.php -s mysiteaccess --force extension/ezwebin/design/ezwebin/templates/pagelayout.tpl extension/ezwebin/design/ezwebin/templates/page_leftmenu.tpl ➔ Force the compilation of all template files starting with « page_header_ » : find extension/ezwebin/ -name "page_header_*.tpl" | xargs php bin/php/eztc.php -s mysiteaccess –force ➔ Force the compilation of all template files from a TXT file : cat template_list.txt | xargs php bin/php/eztc.php -s mysiteaccess --force 20 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS TPL COMPILATION The **** layout module ➔ By default ( $shareTemplates = false ), the layout value is used by the final compiled filename ➔ So if you are using this module with 3 other layouts, youll produce 4 compiled files (instead of 1) ➔ eztc.php script does not manage the layout parameter Your 3 additional compiled files ( for each layout ) will be procude « on the fly », and cannot be pre- compiled with eztc.php ➔ Suggestion : improve eztc.php, add the –layout=... parameter 21 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS SUMMARY CONTEXT INI CACHE TEMPLATE COMPILATION VIEWCACHE CACHE-BLOCK EXPIRY.PHP FILE EZCACHE.PHP SCRIPT QUESTIONS 22 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS VIEWCACHE What for ? ➔ Viewcache = content cache, content viewcache, … ➔ Viewcache is an HTML (or other) cache of the $module_result.content outpout, for a node view call ( content/view/... ) ← Illustration : Łukasz Serwatka http://share.ez.no/learn/ez-publish/ez-publish-performance- optimization-part-3-of-3-practical-cache-and-template-solutions/ (page)/2 23 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS VIEWCACHE How eZ stores the viewcache ? {VarDir}/cache/content/{siteaccess}/{number}/{number}/{number} {VarDir}/cache/content/{siteaccess}/ 2-ce182234bd70236c6a009578d2a34632.cache 20-ce182234bd70236c6a009578d2a34632.cache {VarDir}/cache/content/{siteaccess}/1 101-ce182234bd70236c6a009578d2a34632.cache 105-ce182234bd70236c6a009578d2a34632.cache {VarDir}/cache/content/{siteaccess}/5/2/1 52101-ce182234bd70236c6a009578d2a34632.cache 52144-ce182234bd70236c6a009578d2a34632.cache 24 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS VIEWCACHE How eZ stores the viewcache ? {nodeid}-{hash}.php 2-ce182234bd70236c6a009578d2a34632.cache md5 required nodeID / viewMode / layout / language (view.p.) / offset (view.p.) / indexFile optionnal + roIeIDList / limitValueList / discountList / cacheNameExtra / pr_user / viewParameters / userPreferences ViewCacheTweaks[<node_id>]=<setting>[;<setting2>] ViewCacheTweaks[global]=<setting>[;<setting2>] 25 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS VIEWCACHE How to know the exact matching between a viewcache file & my URLs ? {nodeid}-{hash}.php → deduce the nodeID At the end of file : "view_parameters";a:6: {s:6:"offset";b:0;s:4:"year";b:0;s:5:"month";b:0;s:3:"day";b:0;s:10:"n amefilter";b:0;s:4:"test";s:1:"2";}... Should be URL : /(test)/2 26 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS VIEWCACHE How eZ expires a set of viewcache ? Alteration of cache states - Depending of the filehandler ( file.ini ) ➔ Ezfsfilehandler : UNLINK file ➔ Ezfs2filehandler : TOUCH file (25/25/1977) ← Star Wars day ➔ Ezdbfilehandler : "ezdbfile" (UPDATE expired=1) ➔ Ezdfsfilehandler : "ezdfsfile" (UPDATE expired=1) Comparison of cache states - Depending of the filehandler ( file.ini ) ➔ Ezfsfilehandler : file does not exist, or is older than the content-view- cache timestamp ➔ Ezfs2filehandler : file is older than the content-view-cache timestamp ➔ Ezdbfilehandler : "ezdbfile" (expired=1) ➔ Ezdfsfilehandler : "ezdfsfile" (expired=1) 27 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS VIEWCACHE How eZ expires the ENTIRE viewcache ? ➔ eZ does not recursively update / delete the files (too many files... unsafe) eZ set a global timestamp expiry value : ➔ {VarDir}/cache/expiry.php ← content-view-cache ( current timestamp) Each time the expiry.php is updated, the ENTIRE viewcache will expire. ➔ Ok, but my ENTIRE viewcache expires all the time... i did nothing special ! Dont know why ! 28 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS VIEWCACHE Which event / trigger expires a set of cache ? By default : on object publication (or back-end feature) ➔ the related nodes & parent node Willingly, using a script : ➔ bin/php/ezcontentcache.php –clear-node=2 ➔ bin/php/ezcontentcache.php –clear-node=2,46,63 ➔ bin/php/ezcontentcache.php –clear-node=/company/about ➔ bin/php/ezcontentcache.php –clear-subtree=/company/about ➔ bin/php/ezcontentcache.php –clear- subtree=/company/about,/news 29 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS VIEWCACHE Smart viewcache & cacheThreshold : a set of cache → the ENTIRE view cache Automatically, if using the smart view cache / viewcache.ini : ➔ The smart view cache populates a list of related « node_id » viewcache files to expire, depending of your settings. If this node_id list is larger than the CacheThreshold limit value (250 by default) → eZ expires the ENTIRE viewcache ! ➔ Some settings could increase the node_id list count & excede the CacheThreshold limit : ALL, siblings, KeywordNodesCacheClearLimit ➔ Advice : Set KeywordNodesCacheClearLimit = 0, never use ALL, avoid siblings, log out the CacheThreshold (ezpEvent) 30 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS VIEWCACHE Log the viewcache node_id list to expire, prevent the CacheThreshold limit... ➔ Add an ezpEvent : site.ini.append.php [Event] Listeners[]=content/cache@test::logviewcache # test = your PHP class name # logviewcache = the static method 31 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS VIEWCACHE Log the viewcache node_id list to expire, prevent the CacheThreshold limit... ➔ Create a PHP class / generate autoloads <?php class test { static public function logviewcache( $nodeList ) { $uri = $GLOBALS[_SERVER][REQUEST_URI]; eZLog::write(node_id count : . count( $nodeList ). / node_id list : . implode(, , $nodeList ) . / URI : .$uri, chachethresold.log); return $nodeList; }} ?> ➔ Log output : [ Feb 06 2012 17:48:34 ] node_id count : 5 / node_id list : 1 105, 2, 1, 78 16, / URI : /content/edit/114/2/fre-FR 32 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS VIEWCACHE My ENTIRE viewcache still expire... Maybe you invoked one of these features (back-end, API)  : ➔ Create a new content class ( BUG ? ) ➔ Update / delete an existing content class ( or attributes ) ➔ Update / delete and existing role ( & policies ) OR role assignement ➔ Section assignement ➔ Update an ezshop rule ( discount rules, currency... ) 33 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS 34 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS 35 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS SUMMARY CONTEXT INI CACHE TEMPLATE COMPILATION VIEWCACHE CACHE-BLOCK EXPIRY.PHP FILE EZCACHE.PHP SCRIPT QUESTIONS 36 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK ... What for ? ➔ Template-block cache = cache files related to cache-block, also called « template cache » ( common mistake with the template compilation ) ➔ Template-block cache is an HTML (or other) cache of a template part ( cache- block ) ← Illustration : Łukasz Serwatka http://share.ez.no/learn/ez-publish/ez-publish-performance- optimization-part-3-of-3-practical-cache-and-template-solutions/ (page)/2 37 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK Impact of common parameters The « keys » parameter : Please AVOID : {cache-block keys=$uri_string} 1 template-block file ... for each URI !!! {/cache-block} Use instead : {cache-block keys=$my_custom_limited_range_key} ... {/cache-block} Only possible states of your content inside your block 38 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK Impact of common parameters The « URI key » parameter : stupid but signifiant simulation ➔ A classic Web site, with 1000 nodes, news folder ( year, month archives ), products catalog ( filters ), calendar, forum... ➔ Could generate 10 000 « indexable » several URI ( google bot ) ➔ A cache-block ( only 1 URI key ) to cache the global menu, who is generating 300 SQL queries ➔ No « expiry » or « ignore_content_expiry » parameters : so the cache- block expires every 2 hours (or on content publication) ➔ So... 300 SQL queries * 12 expiration per day * 10 000 URI = 36 millions of SQL queries per day... 39 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK Impact of common parameters The « expiry » parameter : If possible, always set a custom expiry value & ignore content expiry : {cache-block ignore_content_expiry expiry=86400} ... {/cache-block} 40 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK Impact of common parameters The « sutree_expiry » parameter : no more expiry / ignore_content_expiry needed {cache-block subtree_expiry=news/} ... {/cache-block} {cache-block subtree_expiry=142} ... {/cache-block} 41 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK Impact of common parameters The « sutree_expiry » parameter : tip of the « magic » node ➔ To expire a cache-block, depending of a custom rule ( per content class, per PHP algorithm ... ) ➔ Create a {cache-block subtree_expiry=$magic_node_id} ➔ Create a node somewhere ( safe location, without FULL view ) ➔ Create a workflow or customedithandler to include your custom rules on publication, and update the content object related to the magic node by the code 42 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK Cache-block imbrication {cache-block expiry=3600} ... {cache-block ignore_content_expiry expiry=86400} ... {* you save … SQL Queries each hours *} {/cache-block} ... {cache-block subtree_expiry=news/} ... {/cache-block} ... {/cache-block} 43 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK I need a « real time » block ( TTL=1m ) A cache-block may not be the solution, use instead : ➔ ESI ( Edge Side Include ) : better for front-end loading & google bot indexing. But reverse-proxy required ( varnish, squid, akamai... ) ➔ AJAX : easier to implement 44 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK How eZ stores the template-block cache {VarDir}/cache/template-block/1/2/3/12345678.cache {VarDir}/cache/template-block/5/5/5/555666888.cache {VarDir}/cache/template-block/subtree/1/5/9/cache/1/2/3/12345678.cache subtree_expiry=159 CRC32 Complex... The pathname doesnt help 45 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK How eZ stores the template-block cache {VarDir}/cache/template-block/1/2/3/12345678.cache CRC32 ( 32-bit polynomial checksum ) Cache-block position in the .tpl file / template path / keys / siteaccess 78_1_78_94_extension/ezwebin/design/ezwebin/templates/pagelayout.tpl 78 = {cache-block... } line start 1 = {cache-block... } column start (a simple before...) 78 = {cache-block... } line end 94 = {cache-block... } column end 46 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK How to expire the ALL of the template- block cache files ? php bin/php/ezcache.php –clear-id=template-block ➔ Expires all the template-block files, by updating the global cache-block expiry time ( global-template-block-cache ) in the {varDir}/expiry.php file 47 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK How to expire a set of specific template- block cache files ? ➔ Not really possible... exept by searching a specific string inside each files, and deleting matching files ( ezfs / ezFS2 ) ➔ find var/myvardir/cache/template-block/ -mmin -10 -name "*.cache" -exec grep -iHl "ID:BLOCK1" {} ; | xargs rm {cache-block ignore_content_expiry expiry=0} <!-- ID:BLOCK1 --> ... {/cache-block} 48 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS CACHE-BLOCK PULL REQUEST IDEA : {cache-block id=myfolder ignore_content_expiry expiry=0} <!-- ID:BLOCK1 --> ... {/cache-block} {VarDir}/cache/template-block/myfolder/1/2/3/12345678.cache So... to expire your cache-block : mv myfolder myfolder-to-remove nice -n 20 rm -r myfolder-to-remove 49 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS SUMMARY CONTEXT INI CACHE TEMPLATE COMPILATION VIEWCACHE CACHE-BLOCK EXPIRY.PHP FILE EZCACHE.PHP SCRIPT QUESTIONS 50 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS EXPIRY.PHP FILE <?php What for ? $Timestamps = array ( state-limitations => 1321010927, user-info-cache => 1323788789, ➔ To globally expire a cache, eZ content-view-cache => 1326299075, Publish update the related value class-identifier-cache => 1326298969, global-template-block-cache => 1325856140, with the current timestamp. content-tree-menu => 1326298969, image-manager-alias => 1323788788, ➔ eZ Publish compares « on the fly » active-extensions-cache => 1325668728, this updated value with each ts-translation-cache => 1323788789, content-complex-viewmode-cache => 1325780763, caches mtime, always older template-block-cache => 1326298969, user-class-cache => 1326298969, sort-key-cache => 1326298969, ); 51 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS SUMMARY CONTEXT INI CACHE TEMPLATE COMPILATION VIEWCACHE CACHE-BLOCK EXPIRY.PHP FILE EZCACHE.PHP SCRIPT CONCLUSION 52 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS EZCACHE.PHP SCRIPT FAMOUS EZSCRIPT php bin/php/ezcache.php --clear-id=[ID] php bin/php/ezcache.php --clear-id=[ID] --purge php bin/php/ezcache.php --clear-tag=[TAG] php bin/php/ezcache.php --clear-tag=[TAG] --purge php bin/php/ezcache.php --clear-all php bin/php/ezcache.php --clear-all --purge NEED SOME HELP Does it do something php bin/php/ezcache.php --help special ? Superstitious php bin/php/ezcache.php --list-ids parameter php bin/php/ezcache.php --list-tags 53 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS EZCACHE.PHP SCRIPT TAG ID content content / classid / sortey / urlalias / rss_cache / content_tree_menu / state_limiations / template- block / ezjscore-packer template template / template-block / template-override / texttoimage / design_base / ezjscore-packer ini ini / global_ini / active_extensions user user_info_cache I18n translation / chartrans codepage codepage image imagealias rest rest / rest-routes 54 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS EZCACHE.PHP SCRIPT MAIN ALGORITHM Hardcoded in kernel/classes/ezcache.php. For each ID : id => ID tag => array( TAG LIST ) enabled => Cache enabled or not is-clustered => Use the current filehandler or not ? path => Path to purge, if purging (is-clustered=false) expiry-key => Key to set inside the expiry.php file if needed function => Function to apply only on clearing (not purging) function-purge => Function to apply only on purging (not clearing) 55 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS EZCACHE.PHP SCRIPT MAIN ALGORITHM Add your own ID for your extensions ( site.ini.append.php ) # Cache item entry (for eZ Publish 4.3 and up) [Cache] CacheItems[]=ezjscore [Cache_ezjscore] name=eZJSCore Public Packer cache id=ezjscore-packer tags[]=content tags[]=template path=public isClustered=true 56 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS EZCACHE.PHP SCRIPT A BUG HELPS TO UNDERSTAND php bin/php/ezcache.php --clear-id=ini array( name => ezpI18n::tr( kernel/cache, INI cache ), id => ini, tag => array( ini ), enabled => true, path => ini ), Why is it not working ? 57 / 58
  • :~$ eZ Publish Caching Mechanisms // SPICY DETAILS SUMMARY CONTEXT INI CACHE TEMPLATE COMPILATION VIEWCACHE CACHE-BLOCK EXPIRY.PHP FILE EZCACHE.PHP SCRIPT QUESTIONS 58 / 58