[4] Webブラウザーは通常再読み込み機能を実装しています。これはおおむね
location.reload
に相当するものです。
[5] GUI 環境で動作する Webブラウザーは普通ツールバーなどに再読み込みボタンを設けています。
[6] Windows で動作する Webブラウザーの多くは F5 や Ctrl + R で再読み込みが実行されます。
[8] Webサイトによっては、利用者が F5 によって再読み込みを実行することを避けるために鍵盤イベントを取り消しすることでこれを無効化していることがあります。 誤操作や安易な DoS攻撃を避けるために有用なこともありますが、 多くの場合は利用者の利便性を低下させるだけであり、好ましくない挙動と思われています。
[7] 多くの Webブラウザーはスーパーリロードも実装しています。
[40] 多くの Webブラウザーは文字コード指定メニューも実装しています。
[14] 利用者が閲覧文脈の活性文書の再読込を求めたら、 次のようにするべきです >>12。 この時利用者がキャッシュ上書きを指示できても構いません。
[57] 仕様書にはありませんが、キャッシュ上書きが真の場合、 navigate だけでなく、部分資源の fetch でもキャッシュモードが適当に設定されるかもしれません。
[17] かつて仕様書や Firefox は、 overridden reload を組み込んでいましたが、廃止されました。
[9] 再読み込みによって要求を再度実行しても安全かどうかは、
要求メソッドに依存します。 GET
は安全ですが、
POST
は安全ではありません。
[10] Webブラウザーは非安全な要求を再読み込みする前に利用者にモーダルダイアログによって再読み込みを本当に実行するか確認するのが普通です。
PUT
と DELETE
への navigate
があり得ました。)[75] 最近、Chrome は認証ダイアログ後の再読込でも、 安全でないときモーダルダイアログで確認するようになりました。
Location
インターフェイス reload
メソッド[13] Location
インターフェイスの
reload
メソッドは、
次のようにしなければなりません。boolean
として解釈した結果に設定します。Document
の起源と入口設定群オブジェクトの起源が同じ起源ドメインでなければ、SecurityError
例外を投げ、ここで停止します >>12。resize
の dispatch を行っているものなら、iframe
srcdoc
文書なら、iframe
の属性を再処理します。 >>12
[24] IE と Firefox は overridden reload に対応しているようですが、 Chrome は対応していないようです。
[35] HTML Standard はなぜか引数を規定していませんが、実際には省略可能な
boolean
型の引数が1つあるようです。
[47] reload
メソッドは、 Unforgeable
です >>12。
[41] PluginArray
インターフェイスの
refresh
メソッドは、本メソッド相当の動作をすることがあります。
[65] 要求は、 reload-navigation flag を持ちます。 初期値は偽です。 Fetch Standard
[63] Request
インターフェイスの
isReloadNavigation
IDL属性の取得器は、次のようにします Fetch Standard。
boolean
で返します。[61] navigate アルゴリズムは、引数として reload-triggered navigation を持ちます HTML Standard。 再読込の時に設定されます。
[77] navigate は再読込のフラグが設定されますが、 それに付随して発生する fetch (CSS や画像などの読み込み) には設定されません。 サービスワーカーのキャッシュを再読込時に回避するような用途を考慮すると、 再読込だけでなく再読込から呼び出された fetch も再読込に準じるものとみなす必要が出てきます。
[76]
Chrome は
FetchEvent
に
isReload
プロパティーがあります。
isReloadNavigation
には未対応です。
var isReloadClientId = {}; addEventListener ('fetch', ev => { var isReload = false; if (ev.request.isReloadNavigation || ev.isReload) { isReload = isReloadClientId[ev.resultingClientId] = true; } else if (isReloadClientId[ev.clientId]) { isReload = true; } ... });
[79] ただしこの実装例では再読込後の fetch はすべて再読込と判断してしまいます。 最初の読み込みが終わった後の利用者の指示による fetch まで再読込として扱うべきかどうか検討の余地があります。 どの時点まで再読込として (最初の読み込みとして) 扱うべきかはアプリケーションごとに違いそうです。
[80]
この例では navigation 全体が再読み込みかどうかチェックしましたが、
fetch
で
cache: reload
を指定した場合のように、
fetch
単位の再読み込みというのもあります。
そちらも拾いたい時は次のような条件を見ると良いでしょう。
ev.request.cache === "no-store" || ev.request.cache === "reload" || ev.request.cache === "no-cache"
[36] overridden reload は、 document.open
により生成されたページの再読込を行うものです。
document.open
を参照。[1] Window Object 1.0 ( ( 版)) http://www.w3.org/TR/Window/#dfn-reload
[2] Web Applications 1.0 r5709 Make document.reload() reload the input to document.write(), not reload the URL of the page. Also, a number of editorial fixes. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=5708&to=5709
[3] Web Applications 1.0 r8400 Turns out location.reload() does work even when you have a fragment identifier... ( ( 版)) http://html5.org/tools/web-apps-tracker?from=8399&to=8400
[32] Location.reload() - Web API Interfaces | MDN ( 版) https://developer.mozilla.org/en-US/docs/Web/API/Location/reload
[33] location.reloadはhref属性で使うと処理が完了するまで待ちになる at HouseTect, JavaScriptな情報をあなたに (HouseTect, JavaScriptな情報をあなたに 著, 版) http://hisasann.com/housetect/2008/03/locationreloadhref.html
[42] 1069724 – Multiple HTTP2 Connections on shift-reload ( 版) https://bugzilla.mozilla.org/show_bug.cgi?id=1069724
[48] Merge effective script origin into origin · whatwg/html@8a843f2 ( 版) https://github.com/whatwg/html/commit/8a843f2169a6864a3024c4329528dccb2051d275
[49] Editorial: turn "exceptions enabled" into a flag ( (annevk著, )) https://github.com/whatwg/html/commit/879edbfcb25586caec8df93f303a434a700a18bc
[50] 1267474 – Cache-Control: immutable ( ()) https://bugzilla.mozilla.org/show_bug.cgi?id=1267474
[51] Issue 505048 - chromium - Chrome makes more conditional re-validation requests than other browsers - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=505048
[52] Issue 600636 - chromium - Change behavior of Reload to (validate main resource + regular load) instead of the current forced reload which triggers conditional requests on all the things - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=600636
[53] Reload, reloaded - Google ドキュメント ( ()) https://docs.google.com/document/d/1vwx8WiUASKyC2I-j2smNhaJaQQhcWREh7PC3HiIAQCo/edit?pref=2&pli=1
[54] Issue 578941 - chromium - document.location.reload([false]) always reloads from Server instead of Cache - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=578941
You should be able to workaround your problem by hitting refresh, which should bypass that cache. (There are
some exceptions, let me know if you are hitting them).
[56] Issue 44386 - chromium - The "Reload" link on the network error page does not actually do a reload - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=44386
[58] Fix reloads to not wipe out future session history (domenic著, ) https://github.com/whatwg/html/commit/6c777d89fa177cbae2a0671ca9d681d7c81688e3
[59] For users on very slow connections, block document.written scripts · Issue #17 · WICG/interventions () https://github.com/WICG/interventions/issues/17
[60] 747812 - Re-submitted POST request (page reload) does not contain Content-Type - chromium - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=747812
[62] Set request's reload-navigation flag for reloads (yutakahirano著, ) https://github.com/whatwg/html/commit/3072f1d71fc66c792412e1f5785f047f637545b9
[66] Introduce reload-navigation flag by yutakahirano · Pull Request #685 · whatwg/fetch () https://github.com/whatwg/fetch/pull/685
[67] Set request's reload-navigation flag when the navigation is reload-trigerred by yutakahirano · Pull Request #3592 · whatwg/html () https://github.com/whatwg/html/pull/3592
[68] Proposal: FetchEvent.navigationLoadType · Issue #1167 · w3c/ServiceWorker () https://github.com/w3c/ServiceWorker/issues/1167
[69] FetchEvent.prototype.isReload is no longer part of the specification by cdumez · Pull Request #8669 · w3c/web-platform-tests () https://github.com/w3c/web-platform-tests/pull/8669
[70] Editorial: move definition of "reload-navigation flag" (yutakahirano著, ) https://github.com/whatwg/fetch/commit/efe088f656a79af08d98d904e4c5550dc3edc403
[71] Move definition of reload-navigation flag · Issue #732 · whatwg/fetch () https://github.com/whatwg/fetch/issues/732
[72] Move definition of "reload-navigation flag" by yutakahirano · Pull Request #739 · whatwg/fetch () https://github.com/whatwg/fetch/pull/739
[73] document.open() can make a document's URL go out of sync with its history entry · Issue #3885 · whatwg/html () https://github.com/whatwg/html/issues/3885
[74] Remove overridden reload concept (TimothyGu著, ) https://github.com/whatwg/html/commit/6440ccae7340ea41d3eb5bf8ff0b3b27363eda85
[18] 556002 - document.open() and write() after parsing is complete breaks reload button - we reload new, not original document () https://bugzilla.mozilla.org/show_bug.cgi?id=556002
[19] document.open() simplifications, part 2 by TimothyGu · Pull Request #3946 · whatwg/html () https://github.com/whatwg/html/pull/3946
[81] Editorial: nested browsing context is a member, not a type (annevk, , ) https://github.com/whatwg/html/commit/6b737bbc428facf34ec3728c0912cf9e172d0ea4