利用者:JuthaDDA/EmbeddingPagesPurger.js
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
/**
* このスクリプトは、テンプレート等を参照読込しているページのキャッシュを一括で
* 破棄するためのものです。
* 主に画像荒らしを受けたテンプレートへの使用を想定しています。
*
* テンプレートのページを開いた状態で、コンソールに貼り付けて、59行目のコメント
* アウトを解除してから実行してください。
*
* 重複実行を避けるために、[[利用者‐会話:JuthaDDA/EmbeddingPagesPurger.js]]に
* 実行記録を残すことを推奨します。
*/
(() => {
"use strict";
const mwApi = new mw.Api();
const title = mw.config.get('wgPageName').replace(/_/g, ' ');
const params = {
action: 'purge',
format: 'json',
generator: 'embeddedin',
geititle: title,
geilimit: '10'
};
let count = 1;
const purgeEmbeddings = geicontinue => {
if (geicontinue) {
params.geicontinue = geicontinue;
}
mwApi.post(params).done(data => {
console.log(count, data);
if (data?.continue?.geicontinue) {
const warning = data?.warnings?.purge['*'];
if (warning) {
if ("You've exceeded your rate limit. " + 'Please wait some time and try again.' !== warning) {
console.log(warning);
return;
}
console.log('APIの上限に達したため、60秒後に再試行します。');
setTimeout(() => {
purgeEmbeddings(geicontinue);
}, 60000);
} else {
count++;
setTimeout(() => {
purgeEmbeddings(data.continue.geicontinue);
}, 20000); // APIのリミット回避。閾値は20000弱?
}
} else {
console.log('すべての読み込み元ページのキャッシュ破棄が完了しました。');
}
});
};
// purgeEmbeddings();
})();