質問編集履歴

3

見出し「該当のソースコードver03」を追加

2025/02/18 19:00

投稿

kjshdfiuasye
kjshdfiuasye

スコア29

test CHANGED
File without changes
test CHANGED
@@ -76,3 +76,28 @@
76
76
  document.body.appendChild(form);
77
77
  form.submit();
78
78
  ```
79
+
80
+
81
+
82
+ ### 該当のソースコードver03
83
+ [参考記事2](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/redirectCount)によるとリダイレクト回数を取得できるようだったので、下記該当ソースコードを「new1.html」内にscriptタグとして設置しました。これでどこかからリダイレクトしてnew1.htmlに来た場合はPOST送信でcacheをクリアしold.htmlにアクセスさせnew2.htmlに飛ぶという流れになりました。
84
+ ```javascript
85
+ //参考記事2を元に変更した物(ver03)
86
+ const entries = performance.getEntriesByType("navigation");
87
+ entries.forEach((entry) => {
88
+ const name = entry.name;
89
+ const redirectCount = entry.redirectCount;
90
+ if (name === 'https://example.com/new1.html' && redirectCount > 0) {
91
+ //new1.htmlが1回以上リダイレクトされた
92
+ const form = document.createElement('form');
93
+ form.method = "POST";
94
+ form.target = "_top";
95
+ form.action = 'https://example.com/old.html';
96
+ document.body.appendChild(form);
97
+ form.submit();
98
+ } else if (name === 'https://example.com/new1.html' && redirectCount === 0) {
99
+ //new1.htmlが0回リダイレクトされた
100
+ }
101
+ });
102
+ ```
103
+ 欠点は「new1.html」のリダイレクト元が「old.html」以外でも作動してしまうことですが汗。欠点を補うためリダイレクトから判断するのではなくキャッシュかどうかで判断しようと思い[参考記事3:transferSizeとdecodedBodySizeでのキャッシュ判別](https://developer.mozilla.org/ja/docs/Web/API/PerformanceResourceTiming/transferSize#%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%81%8C%E3%83%92%E3%83%83%E3%83%88%E3%81%97%E3%81%9F%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF)を見ましたを試したが、非SSL環境でテストしたためかうまくいかずもう一度チャレンジします。

2

該当のソースコードver02を追加した

2025/02/17 09:11

投稿

kjshdfiuasye
kjshdfiuasye

スコア29

test CHANGED
File without changes
test CHANGED
@@ -21,7 +21,7 @@
21
21
 
22
22
 
23
23
 
24
- ### 該当のソースコード
24
+ ### 該当のソースコードver01
25
25
 
26
26
  ```javascript
27
27
  //参考記事より引用
@@ -37,7 +37,7 @@
37
37
  ```
38
38
 
39
39
  ```javascript
40
- //参考サイトを元に変更した物(下から三行目のみ変更)
40
+ //参考記事を元に変更した物(ver01。下から三行目のみ変更)
41
41
  const ifr = document.createElement('iframe');
42
42
  ifr.name = ifr.id = 'ifr_' + Date.now();
43
43
  document.body.appendChild(ifr);
@@ -62,3 +62,17 @@
62
62
  ### 補足
63
63
  参考記事:https://postd.cc/clearing-cache-in-the-browser/
64
64
  実施環境:macのchrome。バージョン133.0.6943.55
65
+
66
+
67
+
68
+ ### 該当のソースコードver02
69
+ 参考記事のiframeを使う意図がわからなくて、iframe無しverにしてみました。これで当環境では「old.html」から「new2.html」に飛べましたが、これでは「new1.html」に直接アクセスできなくなってしまいました。
70
+ ```javascript
71
+ //参考記事を元に変更した物(ver02)
72
+ const form = document.createElement('form');
73
+ form.method = "POST";
74
+ form.target = "_top";
75
+ form.action = 'https://example.com/old.html';
76
+ document.body.appendChild(form);
77
+ form.submit();
78
+ ```

1

タイトルを修正

2025/02/17 07:56

投稿

kjshdfiuasye
kjshdfiuasye

スコア29

test CHANGED
@@ -1 +1 @@
1
- POSTでキャッシュクリアできるらしいけど上手くいかない
1
+ POSTでキャッシュクリア方法がわからない
test CHANGED
File without changes