在Mediawiki扩展中优化/更快的wiki文本解析?

时间:2017-02-10 19:06:05

标签: mediawiki mediawiki-extensions

我目前正在制作需要在网页上解析wiki文本的Mediawiki扩展程序。目前我使用Parser :: preprocess。这会增加页面加载时间几秒钟。

有没有更快的方法呢?特别是,它必须解析wiki文本,扩展所有模板和解析器函数,并检查结果中的特定字符串。

1 个答案:

答案 0 :(得分:2)

解析不是一种你可以合理地期望快速的操作;你应该设计你的扩展,使得解析只需要在页面的wiki文本(或其某些依赖项)发生变化时发生 - 即。将任何逻辑集成到其中一个解析器挂钩中,例如InternalParseBeforeSanitize并存储结果。

通常您会使用page_props表格(参见ParserOutput::setProperty)但如果这是与安全相关的内容,您应该仔细考虑是否适用于您(它是'每页,而不是每个版本,并且页面和道具表之间有一个小窗口得到更新)。在将来的MediaWiki版本中,您可以在MCR个虚拟插槽中存储任意的每个修订版元数据;现在你必须从头开始,在你自己的表中,在扩展中实现它。或者,如果您考虑在不经常查看的页面上可接受的延迟,则可以随时执行一些轻量级缓存(使用ObjectCache::getMainWANInstance()获取WANObjectCache实例并使用其getWithSetCallback方法。