0

如果我在 mediawiki 中对模板进行更改,则在我编辑页面并重新保存页面之前,效果不会显示在使用模板的页面上。如何反映所有其他页面的变化?

早些时候:[[琐事::{{{琐事|}}}]]

假设我将样式应用于模板中的元素:

[[琐事::{{{琐事|}}}]]

然后,使用此模板的页面中未显示的更改。

4

2 回答 2

0

当您像这样更改嵌入在许多页面上的模板时,MediaWiki 必须更新所有受影响的页面。但是,默认情况下它不会这样做,因为在默认配置中,MediaWiki 仅在有人请求页面时运行。如果当有人请求一个页面时 MediaWiki 必须更新数百个(或者在 Wikipedia 的情况下是数百万个)页面,那么这个人的请求将需要很长时间才能完成。

相反,MediaWiki 有一个“工作”的概念。作业可以由各种操作触发。例如,删除一个页面后,该页面的所有链接必须从蓝色变为红色;并且在更改模板中的类别后,包含该模板的所有页面都必须切换到使用新类别。默认情况下,MediaWiki 在每个页面视图中运行这些作业之一。这对于某些网站来说是可以的,但根据您的使用模式,它可能无法以足够快的速度为您更新所有页面。

为了解决这个问题,MediaWiki 引入了“作业队列”。通过使用此作业队列,您可以在后台以批处理方式运行作业,因此作业可以快速完成,并且请求不会因必须处理作业而减慢。有关如何设置作业队列的信息,请参见上面的链接。

于 2017-07-20T12:26:13.287 回答
0

其他解决方案是创建一个 cron 作业,该作业runJobs.php将从目录运行脚本maintenance,比方说,每小时一次(或更多或更少频率,根据您的需要)。

于 2019-04-17T13:59:11.937 回答