Open Bug 638802 Opened 13 years ago Updated 1 year ago

Feature Request: Freeze Page


(Firefox :: General, enhancement)






(Reporter: eugene.turkulevich, Unassigned)


User-Agent:       Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b12) Gecko/20100101 Firefox/4.0b12
Build Identifier: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b12) Gecko/20100101 Firefox/4.0b12

Actually, this is not a bug, bug Feature Request.
...any Web-Browser is resource-hungry, and there is a lot of hew and powerful hardware to make browsing faster, and a lot of information in the internet to load it and to make browsing slowly. And a lot of pages (30-50-100) in the background can make even 8gb/4core computer work too slow.

What do I propose: add something like "Freeze Page" functionality for each individual page. It will be something like "take page screenshot, remove all page content from memory and place screenshot instead of page". no java, java-script, flash or anything else, even no links, pure screenshot with all information on page.

How it can be used? Simplest way is "Freeze"/"Unfreeze" button. Load page, then click "Freeze", when after 1 or 2 days of idle this page become needed - just to "Unfreeze" or Reload page.

More complicated way is something like "Auto-freeze". With some tunable parameters like "not active page for last N minutes" or "Page on non-active tab-group", with list of tunable exceptions for pages like mailers/social networks, etc.

Reproducible: Always

Steps to Reproduce:
this is just a FR
Actual Results:  
this is just a FR

Expected Results:  
less resource-hungry application

this is just a FR
See bug 561149 and bug 595601, since they cover not loading tabs until needed. 

They don't cover unloading after X amount of time, but perhaps that would be best brought up in those respective bugs.
OS: Mac OS X → All
Version: unspecified → Trunk
Another way of doing this, which I think would be near-seamless to users, would be to implement some kind of FREEZE for tabs.

Basically, stop all animations on the page, pause any plugins, and do not fire any javascript timers or http refresh timers. Just leave the rendered page up.

When the page is activated again (by the user selecting the tab and staying on it more than a few seconds), fire any pending events, resume plugins, and all should continue as usual.  As far as functionality on the page is concerned, this is basically undistinguishable from the computer having been suspended for a while, so it should not cause any problems even in the most advanced AJAX sites like Google Docs.

The benefit is quite obvious: vastly decreased CPU and battery usage with many tabs open. Just freeze all the tabs that you are not using, and have Firefox un-freeze them automatically on activation.

Once this becomes stable enough, it could even be made automatic: any tab that has been inactive for 10 seconds gets frozen, with a right-click option to resume it (mainly for tabs that are just playing background music).

There is one complication that would need to be taken care of, though: since pages can have handles to objects on other pages within the same domain, it would probably create errors if one such page were active and the other frozen.  So it would probably be necessary to group pages by origin.

The algorithm could be something like this: a tab can be auto-frozen if it is not from the same origin as the currently active tab OR any iframes loaded in the currently active tab. And when a tab gets unfrozen, any other tabs with the same origin should be unfrozen too.

Alternatively, Firefox could track more closely the dependencies between tabs in terms of which documents having handles to objects on other documents, instead of using the broad mechanism of "same origin".
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.