利用者:JuthaDDA/EmbeddingPagesPurger.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • 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();
})();