Prerender (prefetch) Multiple Pages

604 views
Skip to first unread message

Nenad Milošević

unread,
Jun 26, 2014, 10:04:49 AM6/26/14
to prer...@chromium.org
Hi,

I'm trying to prerender (prefetch) few pages with no luck. Only the first one get into the cache. 
I'm using this in my header to prerender the pages:

<link rel="prerender" href="page1.html">
<link rel="prerender" href="page2.html">
<link rel="prerender" href="page3.html">

And when I look at Chrome cach (chrome://cache/) or Chrome task manager (for prerendered hint) only the first link is cached.
My question is how to prerender multiple links?

Thanks.


Philip Tellis

unread,
Jun 26, 2014, 4:29:32 PM6/26/14
to Nenad Milošević, Prerender

Try creating anonymous iframes and use document.write to write the prerender tags one into each iframe.

To unsubscribe from this group and stop receiving emails from it, send an email to prerender+...@chromium.org.

Nenad Milošević

unread,
Jun 26, 2014, 4:33:58 PM6/26/14
to prer...@chromium.org, roo...@gmail.com
Thanks man, that's really good idea! I'll try that tomorow...

piaoling

unread,
Aug 5, 2015, 8:00:31 AM8/5/15
to Prerender, roo...@gmail.com
I've tried creating anonymous iframes,but chrome only prerender the first one.

在 2014年6月27日星期五 UTC+8上午4:29:32,bluesmoon写道:

piaoling

unread,
Aug 7, 2015, 1:55:58 AM8/7/15
to Prerender, roo...@gmail.com
I found the source code https://code.google.com/p/chromium/codesearch
//src/chrome/browser/prerender/prerender_config.h
 
  // Number of simultaneous prerender pages from link elements allowed. Enforced
  // by PrerenderLinkManager.
  size_t max_link_concurrency;
 
  // Number of simultaneous prerender pages from link elements allowed per
  // launching page. Enforced by PrerenderLinkManager.
  size_t max_link_concurrency_per_launcher;
 
 
//src/chrome/browser/prerender/prerender_config.cc
Config::Config() : max_bytes(150 1024 1024),
                   max_link_concurrency(1),
                   max_link_concurrency_per_launcher(1),
                   rate_limit_enabled(true),
                   max_wait_to_launch(base::TimeDelta::FromMinutes(4)),
                   time_to_live(base::TimeDelta::FromMinutes(5)),
                   abandon_time_to_live(base::TimeDelta::FromSeconds(3)),
                   default_tab_bounds(640480),
                   is_overriding_user_agent(false) {
}
 
 
 
//src/chrome/browser/prerender/prerender_manager.cc
 
  // Certain experiments override our default config_ values.
  switch (PrerenderManager::GetMode()) {
    case PrerenderManager::PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP:
      config_.max_link_concurrency = 4;
      config_.max_link_concurrency_per_launcher = 2;
      break;
 
//src/chrome/browser/prerender/prerender_manager.cc
PrerenderManager::PrerenderManagerMode PrerenderManager::GetMode() {  return mode_;}
void PrerenderManager::SetMode(PrerenderManagerMode mode) {  mode_ = mode;}
 
 
//src/chrome/browser/prerender/prerender_field_trial.cc
void ConfigurePrerender(const base::CommandLine& command_line) {
  PrerenderManager::PrerenderManagerMode mode =
      PrerenderManager::PRERENDER_MODE_ENABLED;
  if (command_line.HasSwitch(switches::kPrerenderMode)) {
    const std::string switch_value =
        command_line.GetSwitchValueASCII(switches::kPrerenderMode);
 
    if (switch_value == switches::kPrerenderModeSwitchValueDisabled) {
      mode = PrerenderManager::PRERENDER_MODE_DISABLED;
    else if (switch_value.empty() ||
               switch_value == switches::kPrerenderModeSwitchValueEnabled) {
      // The empty string means the option was provided with no value, and that
      // means enable.
      mode = PrerenderManager::PRERENDER_MODE_ENABLED;
    else {
      mode = PrerenderManager::PRERENDER_MODE_DISABLED;
      LOG(ERROR) << "Invalid --prerender option received on command line: "
                 << switch_value;
      LOG(ERROR) << "Disabling prerendering!";
    }
  }
 
  PrerenderManager::SetMode(mode);

It seemsed that we can't use command-line to set  the "mode" = PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP,
only PRERENDER_MODE_DISABLED and PRERENDER_MODE_ENABLED are possible.

在 2015年8月5日星期三 UTC+8下午8:00:31,piaoling写道:

Chris Bentzel

unread,
Aug 8, 2015, 3:46:24 PM8/8/15
to piaoling, Prerender, roo...@gmail.com
Yes - right now Chromium only allows one active prerender by default. Ideally this would be tunable based on how many resources (RAM, CPU, etc.) are available on the system.

benjami...@gmail.com

unread,
Nov 19, 2015, 2:39:24 PM11/19/15
to Prerender, piao...@gmail.com, roo...@gmail.com
Wow @Chris Bentzel! Where did you find that information?


On Saturday, August 8, 2015 at 3:46:24 PM UTC-4, Chris Bentzel wrote:
Yes - right now Chromium only allows one active prerender by default. Ideally this would be tunable based on how many resources (RAM, CPU, etc.) are available on the system.

On Thu, Aug 6, 2015 at 10:56 PM piaoling <piao...@gmail.com> wrote:
I found the source code https://code.google.com/p/chromium/codesearch
//src/chrome/browser/prerender/prerender_config.h
 
  // Number of simultaneous prerender pages from link elements allowed. Enforced
  // by PrerenderLinkManager.
  size_t max_link_concurrency;
 
  // Number of simultaneous prerender pages from link elements allowed per
  // launching page. Enforced by PrerenderLinkManager.
  size_t max_link_concurrency_per_launcher;
 
 
//src/chrome/browser/prerender/prerender_config.cc
Config::Config() : max_bytes(150 1024 1024),
                   max_link_concurrency(1),
                   max_link_concurrency_per_launcher(1),
                   rate_limit_enabled(true),
                   max_wait_to_launch(base::TimeDelta::FromMinutes(4
...
Reply all
Reply to author
Forward
0 new messages