Further improve caching in Catalog.getPageDict
, for disableAutoFetch
mode (PR 8207 follow-up)
PR 8207 added caching to improve the performance of `Catalog.getPageDict`, by not having to repeatedly fetch the same data and also reducing the asynchronicity of that method. However, because of *another* oversight on my part, we're only caching /Page references once we've found the correct page. As long as all pages are loaded *in order* this doesn't really matter (happens by default in the viewer), but when `disableAutoFetch` is used the pages may be fetched in a more random order (this patch reduces the asynchronicity of `Catalog.getPageDict` slightly in that case).
This commit is contained in:
parent
97dc048e56
commit
8a05db230e
@ -1117,13 +1117,14 @@ class Catalog {
|
||||
|
||||
xref.fetchAsync(currentNode).then(function (obj) {
|
||||
if (isDict(obj, "Page") || (isDict(obj) && !obj.has("Kids"))) {
|
||||
// Cache the Page reference, since it can *greatly* improve
|
||||
// performance by reducing redundant lookups in long documents
|
||||
// where all nodes are found at *one* level of the tree.
|
||||
if (currentNode && !pageKidsCountCache.has(currentNode)) {
|
||||
pageKidsCountCache.put(currentNode, 1);
|
||||
}
|
||||
|
||||
if (pageIndex === currentPageIndex) {
|
||||
// Cache the Page reference, since it can *greatly* improve
|
||||
// performance by reducing redundant lookups in long documents
|
||||
// where all nodes are found at *one* level of the tree.
|
||||
if (currentNode && !pageKidsCountCache.has(currentNode)) {
|
||||
pageKidsCountCache.put(currentNode, 1);
|
||||
}
|
||||
capability.resolve([obj, currentNode]);
|
||||
} else {
|
||||
currentPageIndex++;
|
||||
|
Loading…
x
Reference in New Issue
Block a user