Page Speed Optimization Libraries
1.8.31.2
|
#include "beacon_critical_images_finder.h"
Public Member Functions | |
BeaconCriticalImagesFinder (const PropertyCache::Cohort *cohort, NonceGenerator *nonce_generator, Statistics *stats) | |
All constructor args are owned by the caller. | |
virtual Availability | Available (RewriteDriver *driver) |
virtual int | PercentSeenForCritical () const |
virtual int | SupportInterval () const |
virtual void | ComputeCriticalImages (RewriteDriver *driver) |
Compute the critical images for the driver's url. | |
virtual bool | ShouldBeacon (RewriteDriver *driver) |
virtual BeaconMetadata | PrepareForBeaconInsertion (RewriteDriver *driver) |
virtual void | UpdateCandidateImagesForBeaconing (const StringSet &images, RewriteDriver *driver, bool beaconing) |
Static Public Member Functions | |
static bool | UpdateCriticalImagesCacheEntry (const StringSet *html_critical_images_set, const StringSet *css_critical_images_set, const RenderedImages *rendered_images_set, const StringPiece &nonce, const PropertyCache::Cohort *cohort, AbstractPropertyPage *page, Timer *timer) |
Support critical (above the fold) image detection through a javascript beacon on the client.
virtual Availability net_instaweb::BeaconCriticalImagesFinder::Available | ( | RewriteDriver * | driver | ) | [virtual] |
Checks whether IsHtmlCriticalImage will return meaningful results about critical images. Users of IsHtmlCriticalImage should check this function and supply default behaviors when Available != kAvailable.
Reimplemented from net_instaweb::CriticalImagesFinder.
virtual int net_instaweb::BeaconCriticalImagesFinder::PercentSeenForCritical | ( | ) | const [inline, virtual] |
In order to handle varying critical image sets returned by the beacon, we store a history of the last N critical images, and only declare an image critical if it appears critical in the last M out of N sets reported. This function returns what percentage of the sets need to include the image for it be considered critical.
Reimplemented from net_instaweb::CriticalImagesFinder.
virtual BeaconMetadata net_instaweb::BeaconCriticalImagesFinder::PrepareForBeaconInsertion | ( | RewriteDriver * | driver | ) | [virtual] |
Check beacon interval and nonce state, and return appropriate BeaconMetadata; result.status indicates whether beaconing should occur, and result.nonce contains the nonce (if required).
Reimplemented from net_instaweb::CriticalImagesFinder.
virtual bool net_instaweb::BeaconCriticalImagesFinder::ShouldBeacon | ( | RewriteDriver * | driver | ) | [virtual] |
Returns true if it's time to inject a beacon onto the page. The default finder doesn't use beaconing, so it always returns false.
Reimplemented from net_instaweb::CriticalImagesFinder.
virtual int net_instaweb::BeaconCriticalImagesFinder::SupportInterval | ( | ) | const [inline, virtual] |
Minimum interval to store support for critical image results. This affects how long we keep around evidence that an image might be critical; we'll remember the fact for at least SupportInterval beacon insertions if it only occurs once, and we'll remember it longer if multiple beacons support image criticality. By default, SupportInteval() = 1 and we only store one beacon result. The beacon critical image finder should override this to store a larger number of sets.
Reimplemented from net_instaweb::CriticalImagesFinder.
virtual void net_instaweb::BeaconCriticalImagesFinder::UpdateCandidateImagesForBeaconing | ( | const StringSet & | images, |
RewriteDriver * | driver, | ||
bool | beaconing | ||
) | [virtual] |
For implementations that use beaconing, update the candidate images in the property cache. New images are a signal that we should beacon more often for a few requests. The beaconing argument should indicate if the current request is injecting a beacon. If so, we don't need to trigger a beacon on the next request even if the candidate images have changed.
Reimplemented from net_instaweb::CriticalImagesFinder.
static bool net_instaweb::BeaconCriticalImagesFinder::UpdateCriticalImagesCacheEntry | ( | const StringSet * | html_critical_images_set, |
const StringSet * | css_critical_images_set, | ||
const RenderedImages * | rendered_images_set, | ||
const StringPiece & | nonce, | ||
const PropertyCache::Cohort * | cohort, | ||
AbstractPropertyPage * | page, | ||
Timer * | timer | ||
) | [static] |
Update the critical image entry in the property cache. This is meant to be called in the beacon handler, where there is no RewriteDriver available.