Preview responses are cached for a day (Cache-Control: max-age=86400), so rewriting a preview file under the same path (e.g. delete + recreate an LM-managed workflow) kept showing the old image. Append the file's mtime as a query param in get_preview_static_url so any rewrite yields a fresh URL; the previews handler ignores the extra param.