Nikerabbit has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/118815

Change subject: Non-micro optimization for the main page - cache projects
......................................................................

Non-micro optimization for the main page - cache projects

At dev.translatewiki.net this saves 150 ms from the median
page serving time:

Before:
              min  mean[+/-sd] median   max
Connect:        5    6   1.2      6       9
Processing:   377  404  23.3    400     509
Waiting:      377  404  23.4    400     509
Total:        382  410  23.4    406     514

After:
              min  mean[+/-sd] median   max
Connect:        5    6   0.9      6       8
Processing:   216  248  22.4    241     306
Waiting:      216  248  22.4    241     306
Total:        223  254  22.5    249     311

Change-Id: I3e73315241bc7f060fe27df9b4a6c0e06b1b2069
---
M ProjectHandler.php
1 file changed, 13 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/TwnMainPage 
refs/changes/15/118815/1

diff --git a/ProjectHandler.php b/ProjectHandler.php
index a08810c..520adde 100644
--- a/ProjectHandler.php
+++ b/ProjectHandler.php
@@ -10,6 +10,17 @@
 class ProjectHandler {
        public function getProjects() {
                $projects = array();
+
+               $cache = wfGetCache( CACHE_ANYTHING );
+               $cacheKey = wfMemckey( __METHOD__ );
+               $ids = $cache->get( $cacheKey );
+               if ( is_array( $ids ) ) {
+                       $projects = array_map( 'MessageGroups::getGroup', $ids 
);
+                       $projects = array_filter( $projects );
+                       return $projects;
+               }
+
+               // Not cached, find them
                $groups = MessageGroups::getGroupStructure();
 
                foreach ( $groups as $mixed ) {
@@ -20,10 +31,11 @@
                        }
 
                        if ( $group->getIcon() !== null ) {
-                               $projects[] = $group;
+                               $projects[$group->getId()] = $group;
                        }
                }
 
+               $cache->set( $cacheKey, array_keys( $projects ), 60 * 60 * 24 );
                return $projects;
        }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/118815
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3e73315241bc7f060fe27df9b4a6c0e06b1b2069
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/TwnMainPage
Gerrit-Branch: master
Gerrit-Owner: Nikerabbit <niklas.laxst...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to