清除 mediawiki 中的所有页面

Posted

技术标签:

【中文标题】清除 mediawiki 中的所有页面【英文标题】:Purging all pages in mediawiki 【发布时间】:2014-10-25 05:03:42 【问题描述】:

是否可以?我试过清空 obejctcache 表无济于事。我并不是特别想在每个页面上都附加?action=purge。版本 1.23.3

【问题讨论】:

Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User、Web Apps Stack Exchange 或Webmaster Stack Exchange 会是一个更好的提问地点。 @jww 这个简单的事实问题已经存在一年多了,没有关闭并且有投票和投票的答案,这会向您表明a)这是一个对社区有用的合适问题或b)急需关闭。此外,这个问题是关于开发一个涉及编程的 mediawiki 网站的。 【参考方案1】:

你可以

    像这样使用维护脚本PurgeList.phpphp purgeList.php --purge --all,用于 MW > 1.21,php purgeList.php --all-namespaces 用于 MW > 1.34。真正的旧 MW 版本没有--all 选项,因此您需要一个页面列表。

    使用 API:API:Purge,并为其提供所有页面的列表(您可以从 API:Allpages 获得)

    通过 LocalSettings.php 中的setting $wgCacheEpoch to the current time 使所有缓存无效,例如 $wgCacheEpoch = 20140901104232;.

    设置$wgInvalidateCacheOnLocalSettingsChange(自 MW 1.17 起)以实现几乎相同的目标。 仅当您的 wiki 流量低到中等时才这样做

    不确定这是否是个好主意,但如果您可以访问 wiki 的数据库,您也应该能够通过截断表 objectcache 来实现相同的效果。

【讨论】:

php purgeList.php --purge --all 在我的情况下什么也没做。我找不到永久删除所有页面的方法。 ((( @zhekaus 这个问题不是关于删除页面,而是关于清除它们的缓存 这是php purgeList.php --all-namespaces MW 1.34+【参考方案2】:

使用这个简单的命令使所有站点的所有缓存失效:

touch /etc/mediawiki/LocalSettings.php 

因为在touchLocalSettings.php文件中有这部分:

# When you make changes to this configuration file, this will make
# sure that cached pages are cleared.
$wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', @filemtime( __FILE__ ) ) );

__FILE__LocalSettings.php 文件本身,所以如果文件时间是现在,所有早于该文件的缓存都将被清除。

【讨论】:

这是更好的答案。 请注意,自 MW 1.17 起,这不是 LocalSettings.php 的一部分。相反,有一个名为$wgInvalidateCacheOnLocalSettingsChange 的设置可以实现几乎相同的效果。此方法适用于较小的 wiki,但not recommended 适用于高流量 wiki。

以上是关于清除 mediawiki 中的所有页面的主要内容,如果未能解决你的问题,请参考以下文章

仅从 MediaWiki 中的子页面 url 获取页面名称

如何删除 MediaWiki 中的页脚?

将 MediaWiki 内容合并在一起

MediaWiki:页面编辑仅允许创建者或经批准

通过 API 从 mediawiki 页面获取文本内容

如何清除/删除页面列表适配器中的所有项目