Chromium Code Reviews| Index: Source/core/fetch/ResourceFetcher.cpp |
| diff --git a/Source/core/fetch/ResourceFetcher.cpp b/Source/core/fetch/ResourceFetcher.cpp |
| index 24794a10d923f60b411719a5e8c28aefad10d3ee..00332bb6bf291d50fa51c73fd7a1a4ad7970f7b2 100644 |
| --- a/Source/core/fetch/ResourceFetcher.cpp |
| +++ b/Source/core/fetch/ResourceFetcher.cpp |
| @@ -63,26 +63,45 @@ ResourceLoadPriority ResourceFetcher::loadPriority(Resource::Type type, const Fe |
| if (request.priority() != ResourceLoadPriorityUnresolved) |
| return request.priority(); |
| + // An image fetch is used to distinguish between "early" and "late" scripts in a document |
| + if (type == Resource::Image) |
| + m_imageFetched = true; |
| + |
| + // Runtime experiment that change how we prioritize resources. |
| + // Background doc: https://docs.google.com/document/d/1bCDuq9H1ih9iNjgzyAL0gpwNFiEP4TZS-YLRp_RuMlc/edit?usp=sharing |
| + bool deferLateScripts = context().fetchDeferLateScripts(); |
| + bool increaseFontPriority = context().fetchIncreaseFontPriority(); |
| + bool increaseAsyncScriptPriority = context().fetchIncreaseAsyncScriptPriority(); |
| + bool increasePriorities = context().fetchIncreasePriorities(); |
|
Bryan McQuade
2015/08/07 17:30:40
this is the only one that could probably use a com
Pat Meenan
2015/08/07 21:21:14
Added some documentation explaining it. All of th
|
| + |
| switch (type) { |
| case Resource::MainResource: |
| return context().isLowPriorityIframe() ? ResourceLoadPriorityVeryLow : ResourceLoadPriorityVeryHigh; |
| case Resource::CSSStyleSheet: |
| - return ResourceLoadPriorityHigh; |
| + return increasePriorities ? ResourceLoadPriorityVeryHigh : ResourceLoadPriorityHigh; |
|
Bryan McQuade
2015/08/07 17:30:40
just an idea - perhaps we could add a member metho
Pat Meenan
2015/08/07 21:21:14
It's a little more complicated because not all of
Bryan McQuade
2015/08/10 19:27:09
Ah, interesting, didn't realize not all boosts wer
|
| case Resource::Raw: |
| return request.options().synchronousPolicy == RequestSynchronously ? ResourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; |
| case Resource::Script: |
| - // Async scripts do not block the parser so they get the lowest priority and can be |
| - // loaded in parser order with images. |
| + // Async/Defer scripts. |
| if (FetchRequest::LazyLoad == request.defer()) |
| - return ResourceLoadPriorityLow; |
| - return ResourceLoadPriorityMedium; |
| + return increaseAsyncScriptPriority ? ResourceLoadPriorityMedium : ResourceLoadPriorityLow; |
| + // Reduce the priority of late-body scripts. |
| + if (deferLateScripts && request.forPreload() && m_imageFetched) |
| + return increasePriorities ? ResourceLoadPriorityMedium : ResourceLoadPriorityLow; |
| + // Parser-blocking scripts. |
| + if (increasePriorities && !request.forPreload()) |
| + return increasePriorities ? ResourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; |
| + // Early scripts discovered by the preload scanner. |
| + return increasePriorities ? ResourceLoadPriorityHigh : ResourceLoadPriorityMedium; |
| case Resource::Font: |
| + if (increaseFontPriority) |
| + return increasePriorities ? ResourceLoadPriorityVeryHigh : ResourceLoadPriorityHigh; |
| + return increasePriorities ? ResourceLoadPriorityHigh : ResourceLoadPriorityMedium; |
| case Resource::ImportResource: |
| return ResourceLoadPriorityMedium; |
| case Resource::Image: |
| - // Default images to VeryLow, and promote whatever is visible. This improves |
| - // speed-index by ~5% on average, ~14% at the 99th percentile. |
| - return ResourceLoadPriorityVeryLow; |
| + // Default images to VeryLow, and promote when they become visible. |
| + return increasePriorities ? ResourceLoadPriorityLow : ResourceLoadPriorityVeryLow; |
| case Resource::Media: |
| return ResourceLoadPriorityLow; |
| case Resource::XSLStyleSheet: |
| @@ -98,6 +117,7 @@ ResourceLoadPriority ResourceFetcher::loadPriority(Resource::Type type, const Fe |
| case Resource::TextTrack: |
| return ResourceLoadPriorityLow; |
| } |
| + |
| ASSERT_NOT_REACHED(); |
| return ResourceLoadPriorityUnresolved; |
| } |
| @@ -162,6 +182,7 @@ ResourceFetcher::ResourceFetcher(FetchContext* context) |
| , m_autoLoadImages(true) |
| , m_imagesEnabled(true) |
| , m_allowStaleResources(false) |
| + , m_imageFetched(false) |
| { |
| } |