fix(web): новые файлы клиента отдавались без запрета кэширования
A48 и A49 добавили workspace.js, workflow.js и workflow.css, но заголовки Cache-Control им не прописали. Проверено запросом к серверу владельца: у /, /app.js и /style.css стоит no-cache, must-revalidate, а у /workspace.js и /workflow.js заголовков кэша нет вовсе. Из-за этого браузер держал старые файлы после обновления сборки, и владелец видел прежний интерфейс при новом номере сборки — та самая поломка, ради которой запрет кэша когда-то вводился для app.js. Перечисление файлов сделано общим списком, чтобы следующий добавленный файл не оказался снова без заголовков. 609 passed, ruff clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
3e660c39bb
commit
4b6533281e
1 changed files with 17 additions and 0 deletions
|
|
@ -507,6 +507,23 @@ if _STATIC_DIR.is_dir():
|
|||
headers=_NO_CACHE,
|
||||
)
|
||||
|
||||
# A48 и A49 добавили новые файлы клиента, а заголовки кэширования им не
|
||||
# прописали: браузер держал их сколько угодно. Владелец обновлял сборку и
|
||||
# видел прежний интерфейс — ровно та поломка, ради которой запрет кэша
|
||||
# вводился для app.js. Перечисление сделано общим, чтобы следующий
|
||||
# добавленный файл не оказался снова без заголовков.
|
||||
for _client_script in ("workspace.js", "workflow.js", "workflow.css"):
|
||||
|
||||
def _make_route(name: str):
|
||||
media = "text/css" if name.endswith(".css") else "application/javascript"
|
||||
|
||||
def _serve():
|
||||
return FileResponse(str(_STATIC_DIR / name), media_type=media, headers=_NO_CACHE)
|
||||
|
||||
return _serve
|
||||
|
||||
app.get("/" + _client_script)(_make_route(_client_script))
|
||||
|
||||
@app.get("/snapshot.example.json")
|
||||
def _fixture():
|
||||
return FileResponse(str(_STATIC_DIR / "snapshot.example.json"), media_type="application/json")
|
||||
|
|
|
|||
Loading…
Reference in a new issue