Add blob path to markup rendering cache key
What does this MR do and why?
Fixes Heading anchors are not updated when a snippet ... (#605181). Manually verified in GDK-in-a-box.
Root cause
The markup rendering cache key did not include the file path. Because the cache key remained unchanged after a file rename, the stale rendered HTML for snippets was still served, with heading anchors still prefixed by the old filename.
Solution
Added blob.path to the cache key.
Cache key rollover and load impact
This change introduces a new cache key shape for all markup blobs (Markdown, AsciiDoc, org-mode, reStructuredText, etc.), not only in snippets but also in project repositories. Existing entries under the old key become orphans and expire via the cache TTL automatically.
The first access under the new key will trigger a cache miss and re-render each file, which raises a concern about a temporary increase in load. That said, cache misses are expected to occur individually as each file is accessed, rather than all at once, so a coordinated spike is unlikely.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.