预加载控制器补充页面视图缓存命中日志
pageViewForDisplay / prime / takePreloadedView 三条取视图路径打印 HIT/MISS 及视图地址,invalidate 打印被清空的缓存页码,便于排查 翻页时页面视图是否命中缓存。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
47fe2dc450
commit
f796823db8
@ -66,6 +66,10 @@ final class RDReaderPreloadController {
|
||||
}
|
||||
|
||||
func invalidate(environment: Environment) {
|
||||
RDReaderTapDebug.log(
|
||||
"PreloadController.invalidate",
|
||||
"clearing pageCurlCached=\(pageCurlCachedViews.keys.sorted()) preloaded=\(preloadedPageViews.keys.sorted())"
|
||||
)
|
||||
pageCurlCachedViews.values.forEach { $0.removeFromSuperview() }
|
||||
preloadedPageViews.values.forEach { $0.removeFromSuperview() }
|
||||
pageCurlCachedViews.removeAll()
|
||||
@ -81,8 +85,16 @@ final class RDReaderPreloadController {
|
||||
let view: UIView
|
||||
if let reusableView = detachedReusablePageView(for: pageNum) {
|
||||
view = reusableView
|
||||
RDReaderTapDebug.log(
|
||||
"PreloadController.pageViewForDisplay",
|
||||
"cache HIT page=\(pageNum) view=\(RDReaderTapDebug.describe(reusableView))"
|
||||
)
|
||||
} else {
|
||||
view = contentViewProvider(pageNum, nil) ?? UIView()
|
||||
RDReaderTapDebug.log(
|
||||
"PreloadController.pageViewForDisplay",
|
||||
"cache MISS page=\(pageNum) created=\(RDReaderTapDebug.describe(view))"
|
||||
)
|
||||
}
|
||||
if shouldCache(view: view, for: pageNum, environment: environment) {
|
||||
pageCurlCachedViews[pageNum] = view
|
||||
@ -95,6 +107,10 @@ final class RDReaderPreloadController {
|
||||
func takePreloadedView(for pageNum: Int) -> UIView? {
|
||||
let preloaded = preloadedPageViews.removeValue(forKey: pageNum)
|
||||
preloaded?.removeFromSuperview()
|
||||
RDReaderTapDebug.log(
|
||||
"PreloadController.takePreloadedView",
|
||||
"cache \(preloaded == nil ? "MISS" : "HIT") page=\(pageNum) view=\(RDReaderTapDebug.describe(preloaded))"
|
||||
)
|
||||
return preloaded
|
||||
}
|
||||
|
||||
@ -118,10 +134,22 @@ final class RDReaderPreloadController {
|
||||
let contentView: UIView
|
||||
if let existing = preloadedPageViews[targetPage], existing.superview === preloadHostView {
|
||||
contentView = existing
|
||||
RDReaderTapDebug.log(
|
||||
"PreloadController.prime",
|
||||
"cache HIT(preloaded) page=\(targetPage) view=\(RDReaderTapDebug.describe(existing))"
|
||||
)
|
||||
} else if let cached = pageCurlCachedViews.removeValue(forKey: targetPage), cached.superview == nil {
|
||||
contentView = cached
|
||||
RDReaderTapDebug.log(
|
||||
"PreloadController.prime",
|
||||
"cache HIT(pageCurl) page=\(targetPage) view=\(RDReaderTapDebug.describe(cached))"
|
||||
)
|
||||
} else {
|
||||
contentView = contentViewProvider(targetPage, nil) ?? UIView()
|
||||
RDReaderTapDebug.log(
|
||||
"PreloadController.prime",
|
||||
"cache MISS page=\(targetPage) created=\(RDReaderTapDebug.describe(contentView))"
|
||||
)
|
||||
}
|
||||
let shouldCacheContentView = shouldCache(view: contentView, for: targetPage, environment: environment)
|
||||
if shouldCacheContentView {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user