Difference between revisions of "Cache API"
Line 72: | Line 72: | ||
TODO : | TODO : | ||
− | * Switch from using page names (linksto) and template names (template) to using pages ids and template ids, like we did with categories. If possible. | + | * <s>Switch from using page names (linksto) and template names (template) to using pages ids and template ids, like we did with categories. If possible.</s> Not doable - There exists no stable table such as Category for templates and links. Templates and links can be referred to without existing so they don't have an ID as long as they are not created - which could be a problem. Sticking with text for those. |
* Implement other types of dependencies (Namespace, linksfrom, etc...) | * Implement other types of dependencies (Namespace, linksfrom, etc...) | ||
* Implement the NOTs (notcategory, notlinksto, etc...) | * Implement the NOTs (notcategory, notlinksto, etc...) | ||
* Make a better system for deletion of dependencies (right now, the only thing you can do is delete ALL dependencies related to a page at once, this is not good for pages with multiple DPL invocations). | * Make a better system for deletion of dependencies (right now, the only thing you can do is delete ALL dependencies related to a page at once, this is not good for pages with multiple DPL invocations). | ||
− | * Implement cache outdating when special events other than edit/create are performed (deletion, rename, etc...) | + | * <s>Implement cache outdating when special events other than edit/create are performed (deletion, rename, etc...)</s> Done. Cache is now refreshed for dependent articles when articles are edited, deleted, moved, rollbacked, revisionned, or undeleted. |
* If you need anything else, add it here. | * If you need anything else, add it here. | ||
---- | ---- | ||
Feedback and discussion moved [[Talk:Cache API|here]]. | Feedback and discussion moved [[Talk:Cache API|here]]. |
Revision as of 21:27, 1 July 2009
This is a development page for the Cache API that we are currently implementing. Talk to EmuWikiAdmin- for more information.
Manual
We have a somewhat working version here : http://www.emuwiki.com/testinstall/extensions/CacheAPI_current.txt
Updated : EmuWikiAdmin- 05:57, 1 July 2009 (UTC)
Installing
For now this SQL command needs to be executed manually before installing :
CREATE TABLE IF NOT EXISTS `cacheapi` ( `page_ids` INT(10) NOT NULL , `dependencies` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `first` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `type` INT(10) NOT NULL , INDEX ( `page_ids` , `dependencies`(40) , `first`(40) , `type` ) ) ENGINE = MYISAM
You will also need to add this to DPLMain.php :
// update dependencies to CacheAPI whenever the page containing the DPL query is edited if ($wgRequest->getVal('action','view')=='submit') { CacheAPI::remDependencies ( $wgArticle->getID()); $categorylist = array(); foreach ($aIncludeCategories as $categorygroup) { foreach ($categorygroup as $category) { $catobj = Category::newFromName( $category ); array_push ( $categorylist , $catobj->getID() ); } } CacheAPI::addDependencies ( $wgArticle->getID(), 1, $categorylist, ''); }
Removing dependencies
To remove all dependencies of a page, use CacheAPI::remDependencies ( $idOfThePage ).
Adding dependencies
To add a dependency, use CacheAPI::addDependencies ( $pageid , $type, $conditions, );
Type can be :
CACHETYPE_CATEGORY if you want the cache of article $pageid to be dependent on articles being touched in the categories $conditions
CACHETYPE_TEMPLATE if you want the cache of article $pageid to be dependent on articles being touched and containing templates $conditions
CACHETYPE_LINKSTO if you want the cache of article $pageid to be dependent on articles being touched and containing links to page $conditions
$condition is an array of category ids (numbers) or template names (strings).
TODO :
-
Switch from using page names (linksto) and template names (template) to using pages ids and template ids, like we did with categories. If possible.Not doable - There exists no stable table such as Category for templates and links. Templates and links can be referred to without existing so they don't have an ID as long as they are not created - which could be a problem. Sticking with text for those. - Implement other types of dependencies (Namespace, linksfrom, etc...)
- Implement the NOTs (notcategory, notlinksto, etc...)
- Make a better system for deletion of dependencies (right now, the only thing you can do is delete ALL dependencies related to a page at once, this is not good for pages with multiple DPL invocations).
-
Implement cache outdating when special events other than edit/create are performed (deletion, rename, etc...)Done. Cache is now refreshed for dependent articles when articles are edited, deleted, moved, rollbacked, revisionned, or undeleted. - If you need anything else, add it here.
Feedback and discussion moved here.