I don't know details of ASP.NET, but keys are bound to single
transformations and as such they won't be cachable across
invocations of a stylesheet.
Actually, Saxon tries to ensure that if you run the same stylesheet several
times against the same (in-memory) source document, then the indexes are not
rebuilt each time. There are some workload scenarios where this is very
important. It's quite tricky to arrange that the garbage collector drops the
index if either the source document or the stylesheet disappears, but it can