Dribbling CDN segments (logged at 17.8s/59.7s) made the player stare at 'Buffering…' for half a minute per attempt. Cap total load at 10s so a retry kicks in sooner (timeoutRetry still 6x, backoff 1-20s); fast segments (0.1-0.2s) are unaffected.
36 lines
1.6 KiB
HTML
36 lines
1.6 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>ani-web</title>
|
|
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='14' fill='%23f97316'/%3E%3Ctext x='32' y='45' font-family='sans-serif' font-size='42' font-weight='700' text-anchor='middle' fill='%230e0f13'%3Ea%3C/text%3E%3C/svg%3E">
|
|
|
|
<link rel="stylesheet" href="style.css?v=4">
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<a class="logo" href="/">ani-web</a>
|
|
<form onsubmit="const q=document.getElementById('q').value.trim(); if(q) location='?q='+encodeURIComponent(q); return false">
|
|
<input id="q" placeholder="search anime…" autocomplete="off" autocapitalize="off" spellcheck="false">
|
|
</form>
|
|
<span id="me" class="muted"></span>
|
|
<div id="menubox" style="display:none">
|
|
<button id="menu" class="tiny" aria-label="menu" aria-haspopup="true">☰</button>
|
|
<div id="menu-items">
|
|
<a id="stats" class="tiny" href="?stats">stats</a>
|
|
<button id="logout" class="tiny">logout</button>
|
|
<button id="delacct" class="tiny danger">delete account</button>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
<main id="main"><p class="muted">Search for an anime to get started.</p></main>
|
|
<div id="toasts" aria-live="polite"></div>
|
|
<!-- ponytail: bump ?v= whenever app.js/style.css change — they are cached
|
|
max-age=300 in browser AND possibly in your HTTPS proxy, and a stale
|
|
copy is exactly how users keep seeing an old UI after a deploy -->
|
|
<script src="hls.min.js"></script>
|
|
<script src="app.js?v=4"></script>
|
|
</body>
|
|
</html>
|