プログラミング

tampermonkeyで@requireした外部スクリプトのキャッシュを削除するには

tampermonkeyでは@requireで外部のjavascriptファイルを読み込むことができます。
それで僕は、ファイルとかがいろんなとこに散ってるのが嫌いなので、一元管理したく、必要な関数とかは全部まとめたファイルを一度requireしてtampermoneky自体では簡素なコードで動くように、というふうにしたかったのですね。

// @require       https://yuis.xsrv.jp/cdn/js/jsrc.js

んで、つまり、こういう例だと、jsrc.jsファイルはかなりの頻度で更新されるわけで、tampermonkey本体のコードを更新するのと同じくらいにjsrc.jsも更新することになるわけです。

僕はてっきりbashrcみたいに毎度ファイルを読み込んでいるのかと思っていましたが、そうではないようです。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_fa21923b-1c38-4f32-a8a2-81957ed981d7.png

chromeのデベロッパーツールのソースタブからtampermonkeyの内部コードが見れますが、こちらを見ると、サーバー上のjsrc.jsファイルは更新されているのにもかかわらず、こちらのコードは更新が反映されていません。

どうしたらよいのか、まずはとりあえずchromeのページキャッシュ削除、shift-F5を試しました。が、コードは変わらず。当然、動作も変わらず。

で結局どうしたら良いのか、というと、はじめての場合だとこれはわからないなぁというやり方でありました。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_58ad2dad-e9cd-4d0a-8b78-af8d3f528d54.png

スクリプトエディタのところにexternalsというタブがありますので、それをクリックします。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_7c2d75bc-1267-4bb6-a04d-dfe0a5f1c3a5.png

んで任意のファイルの”delete”をクリックしてやります。これで、キャッシュが消えたことになります。

あとはそのスクリプトの動くページへいって通常通り更新をしてみれば、反映されているはずです。

と、これを毎度やらないでキャッシュをしない方法はないのか?ということについてのイシューがgithubにてありましたので載せておきます。

[Suggestion] @-directive or setting for not caching @require scripts? · Issue #475 · Tampermonkey/tampermonkey