asset reload HTTP 캐시 보강

This commit is contained in:
seo
2026-07-10 19:07:09 +09:00
parent f06bc3643d
commit 8a64d993c3
4 changed files with 42 additions and 3 deletions
+1 -1
View File
@@ -37,7 +37,7 @@
<link href="/assets/vendor/bootstrap.min.css" rel="stylesheet">
<link href="/assets/app.css" rel="stylesheet">
<script src="/assets/asset-reload.js" data-service="financial" defer></script>
<script src="/assets/asset-reload.js?v=20260710_assetfix1" data-service="financial" defer></script>
<script src="https://chaegeon.com/log/bancheck.min.js?_=<?php echo time(); ?>"></script>
<script src="/assets/vendor/chart.umd.js"></script>
</head>
+39
View File
@@ -26,6 +26,45 @@
return parsed.toString();
}
function sameOriginUrl(url) {
try {
var parsed = new URL(url, window.location.href);
return parsed.origin === window.location.origin ? parsed : null;
} catch (e) {
return null;
}
}
function addAssetToken(element, attr, token) {
var current = element && element.getAttribute(attr);
var parsed = current ? sameOriginUrl(current) : null;
if (!parsed || parsed.searchParams.get('assetReload') === token) return;
parsed.searchParams.set('assetReload', token);
element.setAttribute(attr, parsed.pathname + parsed.search + parsed.hash);
}
function applyAssetToken(token) {
if (!token) return;
document.querySelectorAll('script[src]').forEach(function (element) {
addAssetToken(element, 'src', token);
});
document.querySelectorAll('link[href]').forEach(function (element) {
var rel = (element.getAttribute('rel') || '').toLowerCase();
if (rel.indexOf('stylesheet') === -1 && rel.indexOf('icon') === -1 && rel.indexOf('manifest') === -1) return;
addAssetToken(element, 'href', token);
});
}
var currentAssetToken = new URL(window.location.href).searchParams.get('assetReload') || '';
if (currentAssetToken) {
applyAssetToken(currentAssetToken);
new MutationObserver(function () {
applyAssetToken(currentAssetToken);
}).observe(document.documentElement, { childList: true, subtree: true });
}
function deleteCaches() {
if (!window.caches || !window.caches.keys) return Promise.resolve();
+1 -1
View File
@@ -78,7 +78,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<link href="/assets/vendor/bootstrap.min.css" rel="stylesheet">
<link href="/assets/app.css" rel="stylesheet">
<script src="/assets/asset-reload.js" data-service="financial" defer></script>
<script src="/assets/asset-reload.js?v=20260710_assetfix1" data-service="financial" defer></script>
<script src="https://chaegeon.com/log/bancheck.min.js?_=<?php echo time(); ?>"></script>
</head>
<body>
+1 -1
View File
@@ -87,7 +87,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<link rel="manifest" href="/manifest.webmanifest">
<link href="/assets/vendor/bootstrap.min.css" rel="stylesheet">
<link href="/assets/app.css" rel="stylesheet">
<script src="/assets/asset-reload.js" data-service="financial" defer></script>
<script src="/assets/asset-reload.js?v=20260710_assetfix1" data-service="financial" defer></script>
<script src="https://chaegeon.com/log/bancheck.min.js?_=<?php echo time(); ?>"></script>
</head>
<body>