build: content-hash cache-busting for local CSS/JS (?v=hash)
Deploy to Production on Develop Push / deploy (push) Successful in 20s
Deploy to Production on Develop Push / deploy (push) Successful in 20s
Stops deploys being served stale from browser cache — the recurring "changes do not show up until a hard refresh" problem. - New tools/cache_bust.py stamps a global content hash onto every local <link>/<script> CSS/JS ref AND the @import lines in css/main.css (so partial edits bust too). External (https://) refs are untouched. Deterministic and idempotent: same content -> same stamp, any asset edit -> new stamp sitewide. - Wired as the final step of tools/build_site.py so every build/deploy stamps. - Initial stamp applied across 259 pages + main.css (v=64a53dd6). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
7c2110d8a5
commit
954f186761
262 files changed
+1518
-1435
No files matched your search
@@ -21,7 +21,7 @@
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-WVYV807VSS');
|
||||
</script>
|
||||
<script src="/consent.js" defer></script>
|
||||
<script src="/consent.js?v=64a53dd6" defer></script>
|
||||
<meta name="description" content="Planning to continue your studies in Slovenia? Citizens of North Macedonia and several other Western Balkan countries can apply for an Ad futura scholarship…">
|
||||
<link rel="canonical" href="https://msosorg.com/en/blog/ad-futura-scholarship-slovenia-2026/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/ad-futura-scholarship-slovenia-2026/">
|
||||
@@ -59,7 +59,7 @@
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" media="print" onload="this.media='all'" /><noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" /></noscript>
|
||||
|
||||
<!-- Correct path to the main CSS file -->
|
||||
<link rel="stylesheet" href="../../../css/main.css">
|
||||
<link rel="stylesheet" href="../../../css/main.css?v=64a53dd6">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -444,9 +444,9 @@
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../../main.js"></script>
|
||||
<script src="../../../main.js?v=64a53dd6"></script>
|
||||
|
||||
<link rel="stylesheet" href="/assistant.css">
|
||||
<script src="/assistant.js" defer></script>
|
||||
<link rel="stylesheet" href="/assistant.css?v=64a53dd6">
|
||||
<script src="/assistant.js?v=64a53dd6" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -21,7 +21,7 @@
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-WVYV807VSS');
|
||||
</script>
|
||||
<script src="/consent.js" defer></script>
|
||||
<script src="/consent.js?v=64a53dd6" defer></script>
|
||||
<meta name="description" content="Arriving at the end of your secondary education, with a modest eighteen years behind you, you have to decide where to continue your studies. Will you stay in…">
|
||||
<link rel="canonical" href="https://msosorg.com/en/blog/how-i-coped-with-leaving-home/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/how-i-coped-with-leaving-home/">
|
||||
@@ -59,7 +59,7 @@
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" media="print" onload="this.media='all'" /><noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" /></noscript>
|
||||
|
||||
<!-- Correct path to the main CSS file -->
|
||||
<link rel="stylesheet" href="../../../css/main.css">
|
||||
<link rel="stylesheet" href="../../../css/main.css?v=64a53dd6">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -348,9 +348,9 @@
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../../main.js"></script>
|
||||
<script src="../../../main.js?v=64a53dd6"></script>
|
||||
|
||||
<link rel="stylesheet" href="/assistant.css">
|
||||
<script src="/assistant.js" defer></script>
|
||||
<link rel="stylesheet" href="/assistant.css?v=64a53dd6">
|
||||
<script src="/assistant.js?v=64a53dd6" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -21,7 +21,7 @@
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-WVYV807VSS');
|
||||
</script>
|
||||
<script src="/consent.js" defer></script>
|
||||
<script src="/consent.js?v=64a53dd6" defer></script>
|
||||
<meta name="description" content="A practical guide for Macedonian students: the documents you need, how to choose a bank, using Flik, and keeping your details up to date after you open the account.">
|
||||
<link rel="canonical" href="https://msosorg.com/en/blog/how-to-open-slovenian-bank-account/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/how-to-open-slovenian-bank-account/">
|
||||
@@ -59,7 +59,7 @@
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" media="print" onload="this.media='all'" /><noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" /></noscript>
|
||||
|
||||
<!-- Correct path to the main CSS file -->
|
||||
<link rel="stylesheet" href="../../../css/main.css">
|
||||
<link rel="stylesheet" href="../../../css/main.css?v=64a53dd6">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -422,9 +422,9 @@
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../../main.js"></script>
|
||||
<script src="../../../main.js?v=64a53dd6"></script>
|
||||
|
||||
<link rel="stylesheet" href="/assistant.css">
|
||||
<script src="/assistant.js" defer></script>
|
||||
<link rel="stylesheet" href="/assistant.css?v=64a53dd6">
|
||||
<script src="/assistant.js?v=64a53dd6" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
+7
-7
@@ -21,7 +21,7 @@
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-WVYV807VSS');
|
||||
</script>
|
||||
<script src="/consent.js" defer></script>
|
||||
<script src="/consent.js?v=64a53dd6" defer></script>
|
||||
<meta name="description" content="Real experiences and practical advice from Macedonian students in Slovenia. New stories are on the way.">
|
||||
<link rel="canonical" href="https://msosorg.com/en/blog/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/">
|
||||
@@ -57,7 +57,7 @@
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" media="print" onload="this.media='all'" /><noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" /></noscript>
|
||||
|
||||
<!-- Link to the main CSS file -->
|
||||
<link rel="stylesheet" href="../../css/main.css">
|
||||
<link rel="stylesheet" href="../../css/main.css?v=64a53dd6">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -434,11 +434,11 @@
|
||||
</div>
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
<script src="../../blog-filter.js"></script>
|
||||
<script src="../../blog-filter.js?v=64a53dd6"></script>
|
||||
|
||||
<script src="../../main.js"></script>
|
||||
<script src="../../filter-search.js"></script>
|
||||
<link rel="stylesheet" href="/assistant.css">
|
||||
<script src="/assistant.js" defer></script>
|
||||
<script src="../../main.js?v=64a53dd6"></script>
|
||||
<script src="../../filter-search.js?v=64a53dd6"></script>
|
||||
<link rel="stylesheet" href="/assistant.css?v=64a53dd6">
|
||||
<script src="/assistant.js?v=64a53dd6" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -21,7 +21,7 @@
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-WVYV807VSS');
|
||||
</script>
|
||||
<script src="/consent.js" defer></script>
|
||||
<script src="/consent.js?v=64a53dd6" defer></script>
|
||||
<meta name="description" content="Moving to Slovenia for your studies? You do not need to speak perfect Slovene before arriving, but learning the basics early will make university…">
|
||||
<link rel="canonical" href="https://msosorg.com/en/blog/learning-slovene-where-to-start/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/learning-slovene-where-to-start/">
|
||||
@@ -59,7 +59,7 @@
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" media="print" onload="this.media='all'" /><noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" /></noscript>
|
||||
|
||||
<!-- Correct path to the main CSS file -->
|
||||
<link rel="stylesheet" href="../../../css/main.css">
|
||||
<link rel="stylesheet" href="../../../css/main.css?v=64a53dd6">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -381,9 +381,9 @@
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../../main.js"></script>
|
||||
<script src="../../../main.js?v=64a53dd6"></script>
|
||||
|
||||
<link rel="stylesheet" href="/assistant.css">
|
||||
<script src="/assistant.js" defer></script>
|
||||
<link rel="stylesheet" href="/assistant.css?v=64a53dd6">
|
||||
<script src="/assistant.js?v=64a53dd6" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -21,7 +21,7 @@
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-WVYV807VSS');
|
||||
</script>
|
||||
<script src="/consent.js" defer></script>
|
||||
<script src="/consent.js?v=64a53dd6" defer></script>
|
||||
<meta name="description" content="Are you a foreign citizen of Macedonian origin living in Slovenia or another eligible country? The Ministry of Education and Science of North Macedonia is…">
|
||||
<link rel="canonical" href="https://msosorg.com/en/blog/study-in-north-macedonia-government-scholarship-2026-2027/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/study-in-north-macedonia-government-scholarship-2026-2027/">
|
||||
@@ -59,7 +59,7 @@
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" media="print" onload="this.media='all'" /><noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" /></noscript>
|
||||
|
||||
<!-- Correct path to the main CSS file -->
|
||||
<link rel="stylesheet" href="../../../css/main.css">
|
||||
<link rel="stylesheet" href="../../../css/main.css?v=64a53dd6">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -393,9 +393,9 @@
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../../main.js"></script>
|
||||
<script src="../../../main.js?v=64a53dd6"></script>
|
||||
|
||||
<link rel="stylesheet" href="/assistant.css">
|
||||
<script src="/assistant.js" defer></script>
|
||||
<link rel="stylesheet" href="/assistant.css?v=64a53dd6">
|
||||
<script src="/assistant.js?v=64a53dd6" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -21,7 +21,7 @@
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-WVYV807VSS');
|
||||
</script>
|
||||
<script src="/consent.js" defer></script>
|
||||
<script src="/consent.js?v=64a53dd6" defer></script>
|
||||
<meta name="description" content="Starting university in another country is easier when you know where to go, who to ask, and what happens during the first days. Slovenia’s main universities…">
|
||||
<link rel="canonical" href="https://msosorg.com/en/blog/welcome-days-slovenian-universities-2026-2027/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/welcome-days-slovenian-universities-2026-2027/">
|
||||
@@ -59,7 +59,7 @@
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" media="print" onload="this.media='all'" /><noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" /></noscript>
|
||||
|
||||
<!-- Correct path to the main CSS file -->
|
||||
<link rel="stylesheet" href="../../../css/main.css">
|
||||
<link rel="stylesheet" href="../../../css/main.css?v=64a53dd6">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -384,9 +384,9 @@
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../../main.js"></script>
|
||||
<script src="../../../main.js?v=64a53dd6"></script>
|
||||
|
||||
<link rel="stylesheet" href="/assistant.css">
|
||||
<script src="/assistant.js" defer></script>
|
||||
<link rel="stylesheet" href="/assistant.css?v=64a53dd6">
|
||||
<script src="/assistant.js?v=64a53dd6" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -21,7 +21,7 @@
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-WVYV807VSS');
|
||||
</script>
|
||||
<script src="/consent.js" defer></script>
|
||||
<script src="/consent.js?v=64a53dd6" defer></script>
|
||||
<meta name="description" content="Finding accommodation is often one of the most stressful parts of moving to Slovenia, especially in Ljubljana and on the coast. The best approach is to begin…">
|
||||
<link rel="canonical" href="https://msosorg.com/en/blog/where-to-search-for-accommodation-in-slovenia/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/where-to-search-for-accommodation-in-slovenia/">
|
||||
@@ -59,7 +59,7 @@
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" media="print" onload="this.media='all'" /><noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" /></noscript>
|
||||
|
||||
<!-- Correct path to the main CSS file -->
|
||||
<link rel="stylesheet" href="../../../css/main.css">
|
||||
<link rel="stylesheet" href="../../../css/main.css?v=64a53dd6">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -437,9 +437,9 @@
|
||||
</footer>
|
||||
<!-- END_FOOTER -->
|
||||
|
||||
<script src="../../../main.js"></script>
|
||||
<script src="../../../main.js?v=64a53dd6"></script>
|
||||
|
||||
<link rel="stylesheet" href="/assistant.css">
|
||||
<script src="/assistant.js" defer></script>
|
||||
<link rel="stylesheet" href="/assistant.css?v=64a53dd6">
|
||||
<script src="/assistant.js?v=64a53dd6" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user