2

私たちは小規模なウィキ ファーム (同じトピック、6 つの言語で成長中) を運営しており、最近ほとんどのテンプレートを更新して、メンテナンスと読みやすさを容易にするために、メタ テンプレートの複数のレイヤーを使用するようにしました。

これらのテンプレートをすべての言語で標準化したいと考えているため、ほとんどのテンプレートには各ウィキでまったく同じコードが含まれます。これが、メンテナンスをさらに簡素化するために、恐ろしいトランスクルージョン (より具体的には置換) の使用を検討している理由です。これにより、これらのメタテンプレートは 1 つの wiki にのみ保存され、すべての wiki ではなくその wiki でのみ更新する必要があります。シングルバージョン。

(注: より良いアイデアを思いついたら、遠慮なくこの投稿にコメントしてください!)

ただし、恐ろしいトランスクルージョンは恐ろしく非効率的であるためにそう呼ばれているため、そのように含まれるコンテンツが MediaWiki によってキャッシュされる方法についてもっと知る必要があります。

私の理解が正しければ、ページの HTML 出力はパーサー キャッシュに $wgParserCacheExpireTime の間保存されます。デフォルトは 1 日ですが、小規模から中規模のウィキでは、ページ自体または含まれているページが更新された場合 (およびその他のマイナーなケース) にかかわらずコンテンツが更新されるため、これを増やしても安全です。

恐ろしいトランスクルージョンのキャッシュ期間もあります: $wgTranscludeCacheExpiry. 毎回その HTTP 呼び出しを行いたくないからです。ただし、既定値の 1 時間は、記事がときどきしか表示されない小さな wiki には適していないため、そのキャッシュはまったく役に立たなくなります。

  • ページ A が別のウィキのテンプレート C を含むテンプレート B を使用している場合、$wgTranscludeCacheExpiry を超えた後、ページ A を完全に再生成する必要がありますか? それとも、$wgParserCacheExpireTime を超えるまで、テンプレート B のパーサー キャッシュを使用できますか?

  • パーサー キャッシュと同じように $wgTranscludeCacheExpiry を 1 か月に増やすこともできますが、トランスクルードされたテンプレートが更新された場合、ページは自動的に更新されませんよね?

  • はいの場合、トランスクルージョンされたテンプレートを使用してページを更新することが、他のウィキを更新する唯一の解決策になりますか?

4

1 に答える 1

1

IMHO を見つけるための解決策は簡単です: 試してみてください! $wgScaryTransclusiveはめったに使用されませんが、これを有効にしようとした少数の人はほとんど問題がないと報告しています。JavaScript ベースの代替手段もあります。マニュアルを参照してください。

パージが大きな問題になることはめったにありません。クロスウィキ テンプレートに、今すぐ絶対に公開したいものが含まれている可能性はほとんどありません。キャッシュが十分に積極的でないと感じた場合は、キャッシュを 1 週間または 1 か月に設定して、問題が発生するかどうかを確認してください。結局のところ、 Ilmari Karonen は、HTML に対してさえ、そのような長いキャッシュを提案しています。

于 2014-12-09T17:44:20.133 に答える