mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +01:00
vueui: add surt check to avoid refetching cdx when url changes in small ways but still using same surt
This commit is contained in:
parent
1d03fa8e6f
commit
ed3ed1281d
File diff suppressed because one or more lines are too long
@ -136,7 +136,7 @@ class VueBannerWrapper
|
|||||||
{
|
{
|
||||||
constructor(loader) {
|
constructor(loader) {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
this.lastUrl = null;
|
this.lastSurt = null;
|
||||||
this.loader = loader;
|
this.loader = loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,10 +154,37 @@ class VueBannerWrapper
|
|||||||
const type = event.data.wb_type;
|
const type = event.data.wb_type;
|
||||||
|
|
||||||
if (type === "load" || type === "replace-url") {
|
if (type === "load" || type === "replace-url") {
|
||||||
if (event.data.url !== this.lastUrl) {
|
const surt = this.getSurt(event.data.url);
|
||||||
|
|
||||||
|
if (surt !== this.lastSurt) {
|
||||||
this.loader.updateSnapshot(event.data.url, event.data.ts);
|
this.loader.updateSnapshot(event.data.url, event.data.ts);
|
||||||
this.lastUrl = event.data.url;
|
this.lastSurt = surt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getSurt(url) {
|
||||||
|
try {
|
||||||
|
if (!url.startsWith("https:") && !url.startsWith("http:")) {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
url = url.replace(/^(https?:\/\/)www\d*\./, "$1");
|
||||||
|
const urlObj = new URL(url.toLowerCase());
|
||||||
|
|
||||||
|
const hostParts = urlObj.hostname.split(".").reverse();
|
||||||
|
let surt = hostParts.join(",");
|
||||||
|
if (urlObj.port) {
|
||||||
|
surt += ":" + urlObj.port;
|
||||||
|
}
|
||||||
|
surt += ")";
|
||||||
|
surt += urlObj.pathname;
|
||||||
|
if (urlObj.search) {
|
||||||
|
urlObj.searchParams.sort();
|
||||||
|
surt += urlObj.search;
|
||||||
|
}
|
||||||
|
return surt;
|
||||||
|
} catch (e) {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user