Domas Mituzas wrote:
> 
> Performance-wise it is even better, if all main messages which have  
> {{SITENAME}} get replacements with literals. Otherwise you're adding  
> up 5ms of page load time to each page. :)

I'm not very familiar at all with the new LocalisationCache system, but 
it seems to me that it might be possible (and useful, from a performance 
viewpoint) to pre-substitute some essentially constant expressions 
(which only depend on things like configuration variables in 
LocalSettings) in advance when the cache is populated.

I can think of at least the following magic words that probably could be 
so substituted:

* {{SITENAME}}
* {{CONTENTLANGUAGE}}, {{DIRMARK}}
* {{SERVER}}, {{SERVERNAME}}, {{SCRIPTPATH}}

Also, the following parametric parser functions could be pre-substituted 
if their arguments are constant (possibly after being themselves 
substituted):

* {{grammar:}}, {{plural:}}
* {{ns:}}, {{nse:}}, {{#special:}}
* {{localurl:}}, {{fullurl:}}, {{filepath:}}
* {{urlencode:}}, {{anchorencode:}}
* {{#language:}}

Actually, almost all parametric parser functions could potentially be 
constant-folded -- for the localization cache, I think it should be 
possible to do that even for {{int:}}.  Furthermore, conditional parser 
functions like {{plural:}} and {{#if:}} could be folded as long as just 
their first parameter is constant.

There would, of course, have to be a configurable list of exceptions: 
for example, if secure.wikimedia.org shares its localization caches with 
the non-https versions of the wikis, then {{SERVER}}, {{fullurl:}}, etc. 
would have to be marked as non-foldable on Wikimedia wikis.  In fact, it 
might be better to let the site maintainer specify a list of config 
variables that should be considered volatile, rather than of specific 
magic words, and just let the code implementing those parser functions 
check that list and mark various functions foldable or non-foldable 
accordingly.  That way, server admins hopefully won't have to keep 
updating the exception list every time new magic words are added.

Alas, while this seems like an interesting project to me, and I'd very 
much like to try developing it, I'd also expect it to take more time 
than I'm likely to have available in the near future.  Thus, I'm tossing 
this idea out for discussion and to see if anyone else might be 
interested in doing something like it.

-- 
Ilmari Karonen

_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to