Systems, methods, and apparatus for identifying important web events and tuning web browser prompts
Patent Information
- Application Number
- CN202480078093.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-01-04
- Filing Date
- 2024-11-01
- Publication Date
- 2026-08-18
AI Technical Summary
没有提示,浏览器可能以默认的、非最优次序加载资源,从而提取延迟可见内容的渲染的非必要元素
[0031] All documents mentioned herein are incorporated herein by reference in their entirety. References to singular items shall be construed as including plural items, and vice versa, unless otherwise explicitly stated or clear from the text. Grammatical conjunctions are intended to express any and all disjunctive and conjunctive combinations of clauses, sentences, words, etc., that they connect, unless otherwise stated or clear from the context.
Smart Images

Figure CN122603330A_ABST
Abstract
Description
[0001] Cross-references to related applications
[0002] This application claims priority and benefit to the following provisional patent application serial numbers: US 63 / 595,605 (VS2466-US-1), filed November 2, 2023, entitled “TUNING HINTS FOR IMPROVED WEB BROWSER PERFORMANCE”; and US 63 / 617,703 (VS2495-US-1), filed January 4, 2024, entitled “DISCOVERY OF REQUIRED SUB-RESOURCES OF A SIGNIFICANT EVENT IN A WEBPAGE RENDERING”.
[0003] For all purposes, all of the aforementioned patent applications are incorporated herein by reference in their entirety. Background Technology
[0004] Web pages consist of numerous resources, including images, scripts, style sheets, fonts, and other media files, which browsers must retrieve to fully render the content. These resources vary greatly in their importance and impact on user experience. While some resources are necessary for displaying primary content (e.g., above-the-fold content, such as highlight images, main text, and layout style designs), others are less critical. For example, images, background scripts, or secondary style designs located further down the page may not be essential for the immediate functionality and visual presentation of the page upon initial load.
[0005] Simultaneously fetching each resource, regardless of its relevance to the initial display, can lead to inefficient bandwidth usage and increased loading times. When unnecessary resources compete with high-priority elements for network bandwidth and processing power, they create unnecessary delays when displaying the main content, making the page feel slower and less responsive. This can result in a frustrating user experience, especially on slower networks or devices with limited processing power, where each additional resource can further slow down the loading process.
[0006] By selectively prioritizing only resources necessary for the initial rendering (such as main text and visible images), developers can minimize the amount of data the browser needs to process immediately, thereby reducing the time users spend viewing and interacting with content. Resources that do not affect the first visible area or immediate functionality (such as images positioned lower down the page) can be deferred or loaded asynchronously, ensuring they do not consume valuable bandwidth or CPU resources during critical first moments.
[0007] Hints are a technique for optimizing network performance and allowing the prioritization of resources needed for rendering events. Hints indicate which resources should be preloaded, prefetched, or prioritized based on their impact on user experience, and help the browser make decisions about the loading order, especially for resources necessary for initial display and interactivity. Without hints, browsers may load resources in a default, suboptimal order, fetching unnecessary elements that render content with a delayed view. Hints ensure that essential resources are loaded promptly, reducing perceived latency and improving page responsiveness. Summary of the Invention
[0008] In some aspects, the technology described herein relates to an apparatus comprising: a resource acquisition circuit configured to parse a resource set; a resource identifier circuit configured to select a first subset of resources from the resource set; a resource supply circuit configured to transmit the resource set to an application, wherein the first subset of resources is transmitted to the application after a first delay; a resource monitoring circuit configured to monitor the first execution of an application using the resource set and determine a first timing of an event during the first execution; a resource analysis circuit configured to determine one or more blocked resources in the resource set for an event, at least in part based on the first timing and the first delay; and an analysis supply circuit configured to transmit a message including an indicator identifying one or more blocked resources.
[0009] In some aspects, the techniques described herein relate to a method comprising: resolving a resource set via a resource acquisition circuit; selecting a first subset of resources from the resource set via a resource identifier circuit; transmitting the resource set to an application via a resource supply circuit, wherein the first subset of resources is transmitted to the application after a first delay; monitoring the first execution of an application using the resource set via a resource monitoring circuit; determining a first timing of an event during the first execution via the resource monitoring circuit; determining one or more blocked resources in the resource set for the event via a resource analysis circuit and based at least in part on the first timing and the first delay; and transmitting a message via the analysis supply circuit, the message including an indicator identifying the one or more blocked resources.
[0010] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium storing instructions that, when loaded into at least one processor, cause at least one processor to: parse a set of resources; select a first subset of resources from the set of resources; transfer the set of resources to an application, wherein the first subset of resources is transferred to the application after a first delay; monitor the first execution of the application using the set of resources; determine a first timing of an event during the first execution; determine one or more blocking resources in the set of resources for the event, based at least in part on the first timing and the first delay; and transfer a message including an indicator identifying the one or more blocking resources.
[0011] In some aspects, the technology described herein relates to an apparatus comprising: a resource acquisition circuit configured to load a first resource set for consumption by a first application; a resource supply circuit configured to provide the first resource set to the first application; a resource monitoring circuit configured to monitor a first execution of the first application utilizing the first resource set; and a timing circuit configured to determine a first timing of an event during the first execution; wherein: the resource acquisition circuit is further configured to load a second resource set and a third resource set for consumption by the first application, wherein the second resource set is a subset of the first resource set, and the third resource set is a different subset of the first resource set; and the resource supply circuit is further configured to provide the first application with resources at a first time. The device provides a second resource set; a resource monitoring circuit is further configured to monitor a second execution of the first application using the second resource set; a resource supply circuit is further configured to provide a third resource set to the first application at a second time; the resource monitoring circuit is further configured to monitor a third execution of the first application using the third resource set; a timing circuit is further configured to determine a second timing of an event during the second and third executions; wherein the device further includes: a resource analysis circuit configured to determine, based on the second timing, that the third resource set includes the resources required for the event; and an analysis supply circuit configured to transmit a message including an indication that the third resource set is identified as including the resources required for the event.
[0012] In some aspects, the technology described herein relates to a method comprising: loading a first resource set for consumption by a first application; providing the first resource set to the first application; monitoring a first execution of the first application utilizing the first resource set; determining a first timing of an event during the first execution; loading a second resource set and a third resource set for consumption by the first application, wherein the second resource set is a subset of the first resource set and the third resource set is a different subset of the first resource set; providing the second resource set to the first application at a first timing; monitoring a second execution of the first application utilizing the second resource set; providing the third resource set to the first application at a second timing; monitoring a third execution of the first application utilizing the third resource set; determining a second timing of an event during the second and third executions; and determining, based on the second timing, that the third resource set includes the resources required for the event.
[0013] In some aspects, the technology described herein relates to an apparatus comprising: a resource acquisition circuit configured to load a first resource set; a selection circuit configured to select a second resource set and a third resource set from the first resource set, wherein the second resource set is a subset of the first resource set and the third resource set is a distinct subset of the first resource set; a resource supply circuit configured to provide the second resource set to a first application at a first time; a resource monitoring circuit configured to monitor a first execution of the first application utilizing the second resource set; wherein the resource supply circuit is further configured to provide the third resource set to the first application at a second time; wherein the resource monitoring circuit is further configured to monitor a second execution of the first application utilizing the third resource set; wherein the apparatus further comprises: a timing circuit configured to determine the timing of an event during the first and second executions; and a resource analysis circuit configured to determine, based on the first time, the second time, and the timing, the resources required for the third resource set to include the event.
[0014] In some aspects, the technology described herein relates to a method comprising: loading a first resource set; selecting a second resource set and a third resource set from the first resource set, wherein the second resource set is a subset of the first resource set and the third resource set is a distinct subset of the first resource set; providing the second resource set to a first application at a first time; monitoring a first execution of the first application utilizing the second resource set; providing the third resource set to the first application at a second time; monitoring a second execution of the first application utilizing the third resource set; determining the timing of an event during the first and second executions; and determining, based on the first time, the second time, and the timing, the resources required by the third resource set to include the event.
[0015] In some aspects, the technology described herein relates to an apparatus comprising: a resource acquisition circuit configured to parse a resource set; a resource identifier circuit configured to select a first subset of resources from the resource set; a resource supply circuit configured to transmit the resource set to an application, wherein the first subset of resources is transmitted after a first delay; a resource monitoring circuit configured to monitor the first execution of a first application; and to monitor one or more drawing events of one or more regions of a page; a resource analysis circuit configured to: determine a timeline of one or more drawing events; and determine, based on the timeline and the first delay, that the first subset of resources includes one or more blocking resources for the events; and an analysis supply circuit configured to transmit a message including an indicator identifying one or more blocking resources.
[0016] In some aspects, the techniques described herein relate to a method comprising: resolving a resource set via a resource acquisition circuit; selecting a first resource subset from the resource set via a resource identifier circuit; transmitting the resource set to an application via a resource supply circuit, wherein the first resource subset is transmitted after a first delay; monitoring the first execution of the application via a resource monitoring circuit; monitoring one or more drawing events of one or more regions of a page via the resource monitoring circuit; determining a timeline of one or more drawing events via a resource analysis circuit; determining, via the resource analysis circuit and based on the timeline and the first delay, that the first resource subset includes one or more blocking resources for the events; and transmitting a message via the analysis supply circuit, the message including an indicator identifying the one or more blocking resources.
[0017] In some aspects, the technology described herein relates to an apparatus comprising: a prompt acquisition circuit configured to parse prompt data defining a plurality of prompts configured to facilitate the loading of a webpage; a combination circuit configured to generate a plurality of prompt combinations from the plurality of prompts; an automatic tuning circuit configured to: for each of the plurality of prompt combinations, use the prompt combination to load the webpage; for each loading of the webpage, determine the timing of an event associated with the loading of the webpage; and generate performance data of the plurality of prompt combinations based at least in part on the timing; and a performance supply circuit configured to transmit the performance data.
[0018] In some aspects, the technology described herein relates to a method comprising: parsing prompt data via a prompt acquisition circuit, the prompt data defining a plurality of prompts configured to facilitate the loading of a webpage; generating a plurality of prompt combinations from the plurality of prompts via a combination circuit; loading the webpage using the prompt combination for each of the plurality of prompt combinations via an auto-tuning circuit; determining, for each loading of the webpage and via the auto-tuning circuit, the timing of events associated with the loading of the webpage; generating performance data of the plurality of prompt combinations via the auto-tuning circuit and at least in part based on the timing; and transmitting the performance data via a performance supply circuit.
[0019] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium storing instructions that, when loaded into at least one processor, cause the processor to: parse cue data defining a plurality of cue data constructed to facilitate the loading of a webpage; generate a plurality of cue combinations from the plurality of cue data; for each of the plurality of cue combinations, use the cue combination to load the webpage; for each loading of the webpage, determine the timing of an event associated with the loading of the webpage; generate performance data for the plurality of cue combinations based at least in part on the timing; and transmit the performance data.
[0020] In some aspects, the technology described herein relates to an apparatus comprising: a prompt acquisition circuit configured to parse prompt data defining a plurality of prompts configured to facilitate the loading of a webpage; a combination circuit configured to generate a plurality of prompt combinations from the plurality of prompts; an automatic tuning circuit configured to: for each of the plurality of prompt combinations, use the prompt combination to load the webpage; for each loading of the webpage, determine the timing of an event associated with the loading of the webpage; and select a prompt combination from the plurality of prompt combinations based at least in part on the timing; and a recommendation supply circuit configured to transmit the selected prompt combination.
[0021] In some aspects, the technology described herein relates to a method comprising: parsing prompt data via a prompt acquisition circuit, the prompt data defining a plurality of prompts configured to facilitate the loading of a webpage; generating a plurality of prompt combinations from the plurality of prompts via a combination circuit; loading the webpage using the prompt combinations for each of the plurality of prompt combinations and via an auto-tuning circuit; determining, for each loading of the webpage and via the auto-tuning circuit, the timing of an event associated with the loading of the webpage; selecting a prompt combination from the plurality of prompt combinations via the auto-tuning circuit based at least in part on the timing; and transmitting the selected prompt combination via a recommendation supply circuit.
[0022] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium storing instructions that, when loaded into at least one processor, cause the processor to: parse prompt data defining a plurality of prompts constructed to facilitate the loading of a webpage; generate a plurality of prompt combinations from the plurality of prompts; for each of the plurality of prompt combinations, use the prompt combination to load the webpage; for each loading of the webpage, determine the timing of an event associated with the loading of the webpage; select a prompt combination from the plurality of prompt combinations based at least in part on the timing; and transmit the selected prompt combination.
[0023] In some aspects, the technology described herein relates to an apparatus comprising: a resource acquisition circuit configured to parse a set of resources for a webpage; a resource identifier circuit configured to select a first subset of resources from the resource set; a resource supply circuit configured to transmit the resource set to a web browser, wherein the first subset of resources is transmitted to the web browser after a first delay; a resource monitoring circuit configured to: monitor the first execution of a web browser using the resource set to load a webpage and determine a first timing of an event during the first execution; a resource analysis circuit configured to determine one or more blocking resources in the resource set for the event, based at least in part on the first timing and the first delay; and a prompt acquisition circuit. The system comprises: a path configured to parse cue data, the cue data defining multiple cuees configured to facilitate the pre-fetching of one or more blocking resources as part of loading a webpage; a combination circuit configured to generate multiple cue combinations from the multiple cuees; an automatic tuning circuit configured to: load a webpage using a web browser and the cue combination for each of the multiple cue combinations; determine the timing of events associated with the loading of the webpage for each load of the webpage; generate performance data of the multiple cue combinations based at least in part on the timing; and select a cue combination from the multiple cue combinations based at least in part on the timing; and a recommendation delivery circuit configured to transmit the selected cue combination.
[0024] In some aspects, the technology described herein relates to a method comprising: resolving a set of resources for a webpage via a resource acquisition circuit; selecting a first subset of resources from the resource set via a resource identifier circuit; transmitting the resource set to a web browser via a resource supply circuit, wherein the first subset of resources is transmitted to the web browser after a first delay; monitoring the first execution of the web browser using the resource set to load the webpage via a resource monitoring circuit; determining a first timing of an event during the first execution via the resource monitoring circuit; determining one or more blocking resources in the resource set for the event via a resource analysis circuit and based at least in part on the first timing and the first delay; and resolving prompt data via a prompt acquisition circuit. The cue data definition is constructed to facilitate the pre-fetching of one or more blocking resources as part of the loading of a webpage; multiple cue combinations are generated from the multiple cue combinations via a combination circuit; for each of the multiple cue combinations, the webpage is loaded using a web browser and the cue combination via an auto-tuning circuit; for each loading of the webpage, the timing of events associated with the loading of the webpage is determined via the auto-tuning circuit; performance data of the multiple cue combinations is generated via the auto-tuning circuit and based at least in part on the timing; a cue combination is selected from the multiple cue combinations via the auto-tuning circuit based at least in part on the timing; and the selected cue combination is transmitted via a recommendation supply circuit.
[0025] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium storing instructions that, when loaded into at least one processor, cause at least one processor to: parse a set of resources for a web page; select a first subset of resources from the set of resources; transmit the set of resources to a web browser, wherein the first subset of resources is transmitted to the web browser after a first delay; monitor the first execution of the web browser using the set of resources to load the web page; determine a first timing of an event during the first execution; determine one or more blocking resources in the set of resources for the event based at least in part on the first timing and the first delay; parse hint data defining a plurality of hints constructed to facilitate the pre-fetching of one or more blocking resources as part of loading the web page; generate a plurality of hint combinations from the plurality of hints; for each of the plurality of hint combinations, load the web page using the web browser and the hint combination; for each loading of the web page, determine the timing of an event associated with the loading of the web page; generate performance data of the plurality of hint combinations based at least in part on the timing; select a hint combination from the plurality of hint combinations based at least in part on the timing; and transmit the selected hint combination.
[0026] In some aspects, the technology described herein relates to a system comprising: a snappi event identifier circuit configured to parse a set of resources for a webpage and identify one or more blocking resources; a prompting implementation circuit configured to: parse data defining a plurality of prompts configured to facilitate the pre-fetching of one or more blocking resources as part of loading a webpage; and generate a recommended prompt set of one or more of the plurality of prompts; and a prompting supply circuit configured to transmit the recommended prompt set.
[0027] In some aspects, the techniques described herein relate to a method comprising: resolving a set of resources for a webpage via a snappi event identifier circuit; identifying one or more blocking resources via the snappi event identifier circuit; resolving data via a prompting implementation circuit, the data defining a plurality of prompts configured to facilitate the pre-fetching of one or more blocking resources as part of loading a webpage; generating a recommended prompt set of one or more prompts of the plurality of prompts via the prompting implementation circuit; and transmitting the recommended prompt set via a prompting supply circuit.
[0028] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium storing instructions that, when loaded into at least one processor, cause at least one processor to: parse a set of resources for a webpage and determine one or more blocking resources; parse data defining a plurality of prompts constructed to facilitate the pre-fetching of one or more blocking resources as part of loading the webpage; generate a recommended prompt set of one or more of the plurality of prompts; and transmit the recommended prompt set.
[0029] In some aspects, the techniques described herein relate to a method comprising: browsing a webpage using a web browser; observing a first timing of page events of the webpage; recording a superset of resources extracted as part of rendering of the webpage prior to the page events; browsing the webpage a second time using the web browser, which introduces a delay before extracting a resource from the superset of resources, wherein the amount of the delay is greater than the timing of the page events; observing a second timing of the page events following the delay; and determining, in part based on the second timing and the amount of the delay, that a resource in the superset of resources is blocking for the page events.
[0030] These and other systems, methods, objects, features, and advantages of this disclosure will be apparent to those skilled in the art from the following detailed description of preferred embodiments and accompanying drawings.
[0031] All documents mentioned herein are incorporated herein by reference in their entirety. References to singular items shall be construed as including plural items, and vice versa, unless otherwise explicitly stated or clear from the text. Grammatical conjunctions are intended to express any and all disjunctive and conjunctive combinations of clauses, sentences, words, etc., that they connect, unless otherwise stated or clear from the context. Attached Figure Description
[0032] This disclosure and the following detailed description of certain embodiments thereof can be understood with reference to the following drawings:
[0033] Figure 1 The system is described in terms of identifying blocked resources and tuning web browser prompts.
[0034] Figure 2 An example depicting the logical data flow of the system's components.
[0035] Figure 3 An example time series plot is depicted.
[0036] Figure 4 The various aspects of the example suggestion service are described.
[0037] Figure 5 An example waterfall diagram is depicted.
[0038] Figure 6 Various aspects of the device used to identify blocked resources are described.
[0039] Figure 7 Aspects of another embodiment of a device for identifying blocked resources are described.
[0040] Figure 8 The various aspects of the methods used to identify blocked resources are described.
[0041] Figure 9 Various aspects of an alternative method for identifying blocked resources are described.
[0042] Figure 10 Various aspects of the device used to identify blocked resources are described.
[0043] Figure 11 Various aspects of an alternative method for identifying blocked resources are described.
[0044] Figure 12 Aspects of another device for identifying blocked resources are described.
[0045] Figure 13 Various aspects of an alternative method for identifying blocked resources are described.
[0046] Figure 14 Aspects of another device for identifying blocked resources are described.
[0047] Figure 15 Aspects of another device for identifying blocked resources are described.
[0048] Figure 16 Various aspects of an alternative method for identifying blocked resources are described.
[0049] Figure 17 The device for providing tips on optimizing web pages is described in detail.
[0050] Figure 18 Aspects of an example embodiment of a device configured to generate prompt priority labels are described.
[0051] Figure 19 Aspects of an example embodiment of a device configured to inject prompt priority tags into a webpage are described.
[0052] Figure 20 It describes various aspects of the example method.
[0053] Figure 21 It describes various aspects of the method.
[0054] Figure 22 It describes various aspects of the method.
[0055] Figure 23 Various aspects of the example device are described.
[0056] Figure 24 It describes various aspects of the example method.
[0057] Figure 25 An example device is described, illustrating various aspects of combining necessary resources for identification and automatic optimization prompts.
[0058] Figure 26 A sample system is described, outlining various aspects of combining necessary resources for identification and automatic tuning suggestions. Detailed Implementation
[0059] This document discloses embodiments and applications of optimizing web page performance by introducing novel techniques for identifying which resources are essential for rendering critical events. These techniques address inefficiencies that occur when browsers extract and process resources that are not necessary for critical events to be completed in a timely manner during web page rendering.
[0060] Identifying the necessary resources (also referred to as blocking resources in this paper) for a webpage is challenging due to the complex interactions between various elements and the browser's rendering process. Webpages consist of a multitude of resources, such as images, CSS, JavaScript files, fonts, and multimedia, each of which can affect how and when specific parts of the page are displayed. In many cases, resources can comprise complex chains of dependencies. For example, JavaScript might depend on CSS for styling elements, or an image might be part of a script-driven animation. These dependencies mean that removing or de-prioritizing seemingly non-critical resources can affect other elements or completely delay rendering, potentially disrupting how or when content appears. In many cases, webpages may include dynamic content loading. Many webpages rely on JavaScript to dynamically load additional resources, often based on user interaction. Resources loaded after the initial rendering (such as content loaded via AJAX or API calls) can still affect the page's layout and functionality. In many cases, the timing of important events may depend on user-specific content. Resources considered critical may vary depending on the user's device, screen size, or geographic location. For example, a high-resolution image might be necessary on a desktop but not on a mobile device. This variability means that identifying necessary resources requires careful consideration.
[0061] Due to the complexity and variability of modern web pages, existing methods for identifying necessary resources are often insufficient. Methods that rely on intuition, trial and error, or simply standard metrics to manually select resources fail to account for the subtle dependencies between resources and the specific needs of diverse user contexts. These methods may overlook hidden dependencies, such as JavaScript functions that depend on specific styles and / or images, leading to unintended side effects when unnecessary resources are de-prioritized or removed.
[0062] Furthermore, existing methods lack the precision required to distinguish between resources critical to the initial rendering and those that can be deferred. This lack of system identification often leads to over-fetching (where too many resources are loaded at once, resulting in unnecessary bandwidth usage and slower loading times) or under-fetching (where key resources are missed, resulting in corrupted or incomplete page elements).
[0063] Therefore, this document discloses a system and method for improved identification of necessary resources for important events. Embodiments include a process in which multiple instances of a webpage are rendered, each instance selectively delaying the loading of one or more specific resources. By comparing the performance of these instances, the system can observe whether delaying specific resources has any impact on the timing of important events (also referred to herein as key events).
[0064] If a resource delay does not affect the timing of important events, it is inferred that the resource is not required for the rendering process and can be safely de-prioritized. On the other hand, if an event is delayed due to resource deferral, this indicates that the resource is needed and should be prioritized during page load. This approach provides a clear, data-driven method for distinguishing between necessary and unnecessary resources for different events associated with rendering a webpage.
[0065] The discovery techniques described in this paper not only improve the accuracy of resource management but also significantly enhance overall webpage performance by optimizing the order in which resources are fetched. Necessary resources can be prioritized for preloading or early fetching, such as pre-fetching, ensuring that the browser focuses first on fetching the most impactful resources. This approach reduces the likelihood of unnecessary delays and helps minimize the time it takes for critical events to occur, resulting in a more responsive and smoother user experience. Simultaneously, non-essential resources can be de-prioritized and / or loaded asynchronously, freeing up bandwidth and processing power for more important tasks.
[0066] The embodiments described herein provide a means to optimize web page performance by preloading necessary resources and de-prioritizing other resources that do not directly contribute to important events. This technique can be further used to inform web developers about the impact of adding new resources, helping them make decisions to improve the user experience by reducing loading times and enhancing the perceived responsiveness of web pages.
[0067] Furthermore, the embodiments described herein provide developers with a deeper understanding of resource dependencies, enabling them to be alerted when certain resources affect critical rendering events. This functionality allows developers to make more informed and strategic decisions when adding new elements or features to a webpage. Developers can assess the potential impact of these resources and adjust their design or loading strategies accordingly, rather than introducing elements that might unknowingly delay critical rendering events or slow down the page.
[0068] Furthermore, by accessing toolsets that identify necessary and unnecessary resources, developers can better prioritize preloading and caching strategies, giving priority to critical resources while deferring or postponing less important assets. This intelligent resource management not only improves load times but also helps ensure that the visually or functionally most important parts of a page are rendered as quickly as possible, providing users with immediate feedback and improving their overall engagement.
[0069] Once the necessary resources have been accurately identified, this information can be used to generate targeted prompts that guide the browser's loading priorities. These prompts (e.g., pre-connect, pre-load, pre-fetch, lazy loading directives, etc.) instruct the browser to prioritize only resources critical to specific events, thereby ensuring timely loading of the main content. In embodiments, prompts can be defined by and / or based on resource type (e.g., CSS, scripts, images, etc.). Prompts can instruct pre-loading, pre-connecting, and / or other types of actions. Non-limiting examples of pre-connecting actions include instructions to establish a connection to the domain of the resource / object early on, but in which the web browser may stop before the resource itself is pre-loaded (or pre-fetched). Non-limiting examples of pre-loading actions include instructions to download the entire resource / object early on.
[0070] This document discloses embodiments and applications of optimizing web page performance by introducing novel techniques for selecting and deploying prompts. These techniques aim to address inefficiencies that occur when deploying prompts. In many cases, the deployment of prompts can lead to unintended inefficiencies due to real-world limitations associated with bandwidth and / or computing resources.
[0071] In the embodiments, different combinations of prompts produce different effects; some combinations enhance performance, while others unintentionally delay the loading of critical content. Current methods often apply prompts statically, meaning the same prompt is used regardless of user context, network conditions, or specific page requirements. This static approach fails to account for subtle performance differences between different devices, networks, or page configurations.
[0072] For example, in high-bandwidth environments, prompts instructing browsers to preload large resources (such as images or scripts) can improve the user experience by ensuring fast loading of essential content. However, if bandwidth is limited, these same prompts may inadvertently compete for network resources, potentially delaying the loading of other critical assets. In such cases, preloading or prioritizing too many resources can overwhelm the network, causing necessary resources to load more slowly than expected.
[0073] Similarly, computing resources affect a browser's ability to process multiple prompts simultaneously. When a device has sufficient processing power, prompts guide the browser to load and render content efficiently. However, on low-power devices, too many high-priority resources can burden the processor, leading to bottlenecks and potentially degrading the user experience.
[0074] By taking bandwidth and computational limitations into account, the embodiments described herein dynamically adapt to the prompt configuration, thereby balancing resource requirements with available capacity. This ensures that prompts are not only tailored to the structure of the page, but also optimized for the specific environment in which they are deployed, thus maintaining efficient page loading across a wide variety of user scenarios.
[0075] The system and method disclosed in this paper employ a feedback-driven process to automatically experiment with different cue configurations, thereby identifying the most effective combination of cuees for each page. In one example, the system can selectively experiment with different cuees for different resources (e.g., pre-connecting, pre-loading, or priority cuees) and determine which type of cue will provide the greatest benefit for different resources (e.g., faster load times, more responsive pages, etc.). By continuously learning from performance data, the system adapts to various scenarios, providing a dynamic and optimized set of cuees aligned with real-time needs. This approach not only maximizes page load performance but also seamlessly adapts to diverse user environments, creating a more responsive and adaptive cue strategy than traditional methods.
[0076] The prompt tuning techniques described herein not only maximize page load performance but also seamlessly adapt to diverse user environments, thereby creating responsive and adaptive prompt strategies. In some embodiments, prompts can be tuned in real time based on available bandwidth, computing resources, and user-specific conditions.
[0077] In one example, the tipping optimization techniques described in this paper enhance the consistency of user experience across devices and network conditions. Users with powerful devices and high-speed connections benefit from fast and efficient loading of primary and secondary resources, thereby improving overall page responsiveness and perceived agility. Meanwhile, users on slower networks or low-power devices still receive a highly optimized experience, where critical resources are prioritized to ensure that necessary content loads first, even under resource constraints.
[0078] In another example, the ability to optimize provides businesses with a competitive advantage by increasing user engagement and retention. Fast-loading pages are less likely to suffer from user churn, thus improving conversion rates and user satisfaction. This performance optimization approach not only improves the end-user experience but also enhances engagement, particularly in e-commerce, media, and other web-driven industries where seamless browsing is essential for user retention.
[0079] As will be understood, the embodiments disclosed herein are not limited to the embodiments and applications disclosed herein or the operation of the embodiments and applications or the manner described herein.
[0080] As used in this article, "basically" means sufficient to achieve the intended purpose. When used relative to a number or range, "basically" means within ten percent. The term "ones" means more than one.
[0081] As used herein, "web resource" and "web resource" can refer to visual objects (e.g., text, images, videos, etc.), audio objects, a collection of one or more instructions (e.g., a hypertext-encoded page, a stylesheet such as Cascading Style Sheets (CSS) for displaying and / or playing a web resource, a script file such as JavaScript, etc.), and / or a web service that becomes available to one device on a network and / or is provided to another device when requested by one device on another device. "Web resource" and "web resource" may be simply referred to as "resource" herein. In embodiments, "web resource" and "web resource" may include portions necessary for a web page to function and display content. Resources may include any element or aspect of a web page, including HTML code, CSS code / files, scripts, images, fonts, multimedia, libraries, plugins, data files (e.g., JSON, XML), etc. Resources may include portions requested and loaded by a browser when a user browses a web page. Resources may also include portions executed on a client device, and in some cases, they may include portions executed remotely.
[0082] As used herein, a "parent" resource includes, among other elements, one or more instructions for retrieving "child" and / or "sub" resources from a specified device. Examples of parent / child resources include web pages (e.g., written in markup languages such as Hypertext Markup Language (HTML), Extensible Markup Language (XML), media manifest files or other files that reference other media objects (e.g., movies, pre-recorded television programs), services that provide access to streaming media objects that reference other media objects (e.g., podcasts, live television broadcasts, streaming music, etc.), services for delivering specified data files that reference other data objects, etc. Any of the foregoing can also be a child / sub-resource. Additional examples of child / sub-resources include images, audio files, video files, style files such as Cascading Style Sheets (CSS), executable scripts such as JavaScript, etc. Child / sub-resources may further include child elements of a resource. For example, a resource such as a script file may include multiple scripts, and each of the multiple scripts can be a child resource of the script resource.
[0083] As used herein, "web page element" can refer to a block that defines the structure, content, and / or functionality of a web page. Web page elements can be defined in code and / or associated with resources. Non-limiting examples of web page elements include HTML tags, where each tag can be an element.
[0084] As disclosed herein, a “web page event” can refer to a specific moment and / or action that occurs during the lifecycle of a web page viewed by a user. Web page events can occur at these times: from when the page begins to load until the web page is fully interactive, after the page has been displayed, and after the user leaves the page.
[0085] As used herein, “significant events,” “snappi events,” and / or “blocking events” can refer to specific web page events and / or sets of web page events that are designated as having a meaningful and / or influential completion of the loading, rendering, and / or other similar processes of a web page, such as events that contribute to the “agility” of a web page. Users and / or systems may classify significant and / or blocking events as significant based on criteria and / or scoring methods. Significance can be attributed to various contexts, such as actual importance, page agility, percentage of loading / rendering, time, etc. Examples of significant events include First Render (FP) (the first point of any content rendered on the screen), First Content Render (FCP) (the first piece of content rendered on the screen), Largest Content Render (LCP) (the largest visible element rendered), First Meaningful Render (rendering the main content of the page), Time to Interact (TTI) (the page becomes interactive, meaning it has finished rendering content and is responding to user input), DOM Content Load (DCL) (the initial HTML document is fully loaded and parsed, but before other resources such as stylesheets, images, and scripts are fully loaded), First Input Delay (FID) (the browser responds to the first user interaction), and so on. In embodiments, significant events may include custom events, which include a custom combination of one or more of the loading, rendering, or interaction milestones.
[0086] As used in this article, “latency” relative to a resource can refer to the period during which an application (e.g., a web browser) is blocked and / or restricted from accessing the resource. Latency can be an additional and / or supplementary period compared to the normal and / or average time it takes for the resource to be requested, loaded, and / or become available. Latency can be intentionally added and / or may occur due to operational errors. Latency can be inserted at browsers, external data providers, etc. Latency can be added via scripts, server-side latency, browser directives, etc. Latency caused by operational errors may stem from network congestion, memory bottlenecks, processing limitations, etc.
[0087] As used herein, "drawing region" can refer to an area in which a browser renders elements such as text, images, videos, and other multimedia content. The drawing region can be drawn over the user's viewport and / or include various shapes, such as rectangles, circles, or any other shape. In embodiments, the drawing region may include non-intersecting areas.
[0088] As used in this article, "de-prioritization" can refer to reducing the importance of a resource. For example, a de-prioritized resource might be removed as a candidate in a suggestion.
[0089] As used herein, a "Universal Resource Locator" specifies the location of a network resource and is sometimes abbreviated as URL. In some examples, a Universal Resource Locator includes a "host identifier" and a "resource identifier." The "host identifier" identifies the host server from which the network resource is to be retrieved, and the "resource identifier" identifies the network resource. In some examples, the resource identifier is the path to the resource on the host server. As defined and used herein, a Universal Resource Locator, within its meaning, includes, but is not limited to, the content commonly referred to as a Universal Resource Locator or URL in Internet or World Wide Web applications.
[0090] When used in a reference URL (whether it is a static URL, a parsed dynamic URL, or a parsed random value URL), "prefetch" or "fetch" means obtaining the resource identified by the static or parsed URL from the host server.
[0091] As used in this article, "loading" a webpage should be understood broadly. In the context of webpages, "loading a page" refers to one or more of the processes of fetching, rendering, placing in storage, or preparing all necessary resources for the webpage to function. This includes not only downloading resources such as HTML, CSS, JavaScript, images, and fonts, but also rendering these resources within the browser to visually display the content, establish interactivity, and ensure responsive behavior.
[0092] As used herein, "transfer" of a webpage should be interpreted broadly. In the context of webpages, "transfer" refers to the process of delivering webpage content and resources to a client either by sending them over a network or by providing them directly within a local server environment. When transferred over a network, resources such as HTML, CSS, JavaScript, images, and multimedia files are sent from a remote server to the client's browser via network protocols such as HTTP or HTTPS. Alternatively, in a local server environment, transfer may involve making these resources available directly from the server's storage, thus bypassing the need for external network transmission. As used herein, transfer may also refer to the transfer and / or sharing of data and / or values between two or more circuits and / or other devices.
[0093] Embodiments of this disclosure can provide improved "snappiness," as used herein, where "snappiness" can refer to the user's perceived responsiveness to a displayed page. For example, agility can refer to the responsiveness and speed at which a webpage loads and reacts to user interaction. Agility can also refer to and / or include a measure of one or more parameters related to parameters such as loading time, interactivity (latency between user actions), and smoothness (the fluidity of animations and transitions without stuttering or lag).
[0094] Now for reference Figure 1A system 100 for identifying congested resources and optimizing web browser tips may include one or more discovery servers 110 and / or one or more tip optimization servers 112. As disclosed in more detail herein, in embodiments, discovery server 110 is configured to identify / detect / identify one or more congested resources associated with rendering a webpage hosted by one or more web servers 114, which may utilize resources hosted by one or more resource servers 116 and 118. The identified significant events may be provided to optimization server 112, which determines an optimal set of tips hosted by one or more tip servers 120 for use by a web browser. Figure 2 The 210 in this document (also referred to as the web browser in this document) is used when loading web pages.
[0095] In embodiments, the web browser may reside on a computer 122 connected to a network 124 (e.g., the Internet) via a landline, wherein the network 124 is further connected to a discovery server 110, a prompting and tuning server 112, a network server 114, resource servers 116 and 118, and / or a prompting server 120. Embodiments of the web browser may also reside on a computer 126 connected to the network via a satellite 128 having corresponding uplinks 130 and downlinks 132, a computing device 134 (e.g., a smartphone), and / or a mobile system 138 (e.g., a vehicle, such as an aircraft equipped with an Internet connection via satellite 128) connected to the network 124 via wireless connections (e.g., WiFi and / or cellular (represented by antenna 136)).
[0096] Figure 2 An example depicting the logical data flow of system components is provided. System 160 may include a first subsystem 162 for identifying necessary or blocking resources for an event and a second subsystem 164 for optimizing prompts. In one configuration, such as Figure 2 As shown, the output of the first subsystem 162 can be the input of the second subsystem 164. In one example, elements of the first subsystem 162 may include a discovery server 110 and may be configured to determine one or more blocking resources for different events. The first subsystem 162 may generate one or more lists of blocking resources for one or more important events of a webpage. The list of blocking resources can be used to generate tips for the page. The second subsystem 164 may be configured to optimize the tips generated from the list of blocking resources. The second subsystem 164 may include... Figure 1 One or more tuning servers 112 as described herein. The second subsystem 164 can generate a set of optimization hints (e.g., an ordered set of hints) that can be used to optimize the rendering of web pages for clients.
[0097] like Figure 2The system's modules, as depicted, can be used independently of each other. This modular setup offers the advantage of selectively deploying only the necessary subsystems based on application requirements. For example, in one configuration, a first subsystem 162, identifying necessary or blocking resources for critical events, can be used alone to generate hints for resource prioritization without requiring further optimization by a second subsystem 164. This configuration is particularly useful when quick, initial hints are sufficient or when the overhead of additional optimization processes is unnecessary.
[0098] A second subsystem 164, responsible for refining and optimizing load hints, can be deployed independently to enhance existing hints that may not originate from the first subsystem 162. In this configuration, the second subsystem 164 can apply its optimization logic to hints derived from external sources, legacy systems, or manual input, making it general in enhancing any pre-existing hint strategy. This allows for further refinement of load priorities, tuning of hint sequences to improve resource loading efficiency, and enhancement of overall page performance, without relying on discovery output from the first subsystem.
[0099] The operations of subsystems 162 and 164 can be performed offline within a controlled test bench environment. Running these operations offline allows for extensive testing and tuning without impacting the real-time user experience or network conditions. In the test bench setup, the first subsystem can identify necessary or blocking resources by determining the impact of resource latency on different events. Similarly, the second subsystem's hint optimization can be performed offline, where the generated hints are refined and sorted for optimal loading. The test bench environment allows for iterative testing of various hint configurations to understand how they affect loading performance across a range of scenarios, such as different network speeds, device types, and resource loading.
[0100] refer to Figure 3 Time series diagram 200 depicts an approximate sequence of processing events and message transmissions between discovery server 110, suggestion tuning server 112, web server 114, resource servers 116 and 118, suggestion server 120, and web browser 210 according to embodiments of the present disclosure, where time flows in the direction of arrow 212. Thus, discovery server 110 sends a webpage request 214 to web server 114, which responds with a webpage root 216. Discovery server 110 then begins using webpage root 216 to run trials 218 to determine one or more necessary resources 220.
[0101] In this embodiment, the discovery process does not require a web server and can be implemented locally. The discovery server 110 may be configured with web pages, so that requests for web page resources from the discovery server 110 to the web server are not required.
[0102] In one embodiment, experiment 218 may include identifying necessary resources for one or more critical events. In some cases, the discoverer may determine one or more blocking events by analyzing events during rendering. In one embodiment, the discoverer may identify critical resources by iteratively delaying one or more resources and monitoring the impact of the delay on the timing of critical events. Based on the impact, the discoverer may determine which resources are necessary for the events. Based on the results of the analysis, the discoverer may generate one or more lists of necessary resources 220 for one or more critical events.
[0103] In one embodiment, the list of resources 220 is then transmitted to a prompting optimization server 112, which then runs experiment 226 to determine an optimal prompt 230, for example, an ordered list of prompts configured to optimize the agility of a webpage. In another embodiment, experiment 226 may involve loading the webpage multiple times using a browser, a modified browser, and / or an application configured to simulate web browser 210, while timing for important events is measured. Therefore, the prompting optimization server may make webpage request 232 to obtain the webpage root 234, and also make a prompt request 236 to prompt server 120 to obtain an unmodified prompt 238. As part of experiment 226, prompting optimization server 112 may then generate combinations from prompt 238, and for each combination, simulate webpage loading by requesting 240 and receiving 242 resources from resource servers 116 and 118 according to the combination.
[0104] Based on the experiment, the prompting tuning server then determines / generates an optimized prompt set 230, which can then be transmitted to the prompting server 120 for use by the web browser 210 in future page loads. For example, the web browser 210 may make a page request 244 to receive the root 246 and a prompt request 248, in which the prompting server 120 sends back optimized prompts 250. The web browser 210 can then use the prompts to prefetch resources via one or more resource requests 252 and corresponding resource retrievals 254 (e.g., downloads).
[0105] The prompts generated by the system can be delivered using a prompting service. In this embodiment, any suitable prompting service can be used. Figure 4Some aspects of the example tipping service 400 are described. The tipping service can be configured as a distributed system where multiple components operate across various cloud platforms. The tipping service may include source components configured to generate, manage, and store tips. The tipping service may include edge components deployed as distributed worker servers. These edge components can deliver tips to user devices with minimal latency, accessing the nearest data center for each user location. Edge components can be geographically distributed edge servers. By hosting edge components close to end users, tipping service 400 can provide optimized tips in real time, adapting to specific conditions such as network speed and device capabilities. This cloud-based, multi-tiered architecture allows the tipping service to combine centralized tip generation with distributed, low-latency tip delivery, thereby optimizing performance across a wide variety of geographical and technical environments.
[0106] Figure 5 This example waterfall chart visually represents the order and timing of resources loaded by the browser when rendering a webpage. The chart includes rows for each resource (e.g., images, CSS files, JavaScript files, fonts, etc.), with horizontal bars indicating how long it takes to load each resource and when each loading stage occurs. The chart shows the order and duration of the loading times for each resource. The timeline runs from left to right, with each resource's row divided into segments representing different loading stages, including content downloading, processing, rendering, etc.
[0107] The example waterfall plot further illustrates the timing of critical events. This plot shows the timing of LCP events (depicted as vertical dashed lines). The relative timing of LCP events and the timing of resources provide an indication of whether a resource is a necessary or blocking resource for that event.
[0108] For example, if LCP occurs after the CSS file has been fully loaded, it indicates that the CSS is not required for the event. On the other hand, if LCP occurs after the CSS file has been fully loaded, the CSS file is not necessarily necessary / blocking for the LCP event.
[0109] To determine whether a resource is required for an event, it can be delayed, thus noting any impact on the event's timing due to the delay. If delaying the resource pushes the event to occur later, this confirms the resource's importance. Conversely, if the delay has no effect, it indicates that the resource is not required for the event. Repeating these observations across different resources provides a list of resources required for the event. By systematically analyzing the impact of delays on resources, the system can identify which resources are necessary for a specific event, allowing for optimized loading strategies that improve page performance by prioritizing necessary resources.
[0110] In an embodiment, the system can determine the necessary resources for a specific event by systematically delaying individual resources and observing their impact on the timing of that event. In one example, the delay of a resource during testing can be an amount greater than the event timing under normal conditions, for example, in the absence of an inserted delay. In an embodiment, the delay set for a resource can be set to at least n times the timing of a page event, where n can be 2, 3, 4, 5, 6, 7, 8, 9, 10, or more. For example, the timing of an event (e.g., LCP) during normal page rendering (e.g., in the absence of an inserted delay) can be measured as occurring 10 ms after rendering begins. During testing, resources can be delayed by 20 ms, 30 ms, 40 ms, 50 ms, 60 ms, 70 ms, 80 ms, 90 ms, 100 ms, or more. If the resource delay also delays a significant event (e.g., by 10 ms or more), the delayed resource can be identified as a blocking resource for that event.
[0111] In another example, testing whether a resource is blocking may involve browsing a webpage using a web browser and observing a first timing (e.g., 10 ms) of the webpage's page events. A superset of resources may be fetched as part of the rendering of the webpage that occurs before the page events. As should be understood, a resource superset is a set of resources that may potentially be blocking for the events. To test which resource in the resource superset is blocking, the webpage may be browsed a second time using the web browser. The web browser may be configured to introduce a delay before fetching one or more resources from the resource superset. The delay may be set by an amount greater than the timing of the page events (e.g., greater than 10 ms, such as 20 ms, 30 ms, or more). The timing of the page events after the delay may be monitored. Based in part on the second timing and the amount of delay, the system may determine that a resource in the resource superset is blocking for the page events (e.g., if the event is delayed, the resource is a blocking resource).
[0112] Figure 6 An apparatus 600 for identifying blocked resources according to this disclosure is depicted. The apparatus 600 can form a discovery server 110 (…). Figure 1 ), prompting for server optimization 112 ( Figure 1 ), network server 114 ( Figure 1 Resource servers 116 and 118 Figure 1This device is part of and / or any other computing device disclosed herein. The apparatus 600 includes resource acquisition circuitry 610, resource identifier circuitry 612, resource supply circuitry 614, resource monitoring circuitry 616, resource analysis circuitry 618, analysis supply circuitry 620, agility circuitry 622, and / or baseline acquisition circuitry 624, as described in more detail herein, which parse, process, and / or otherwise interact with associated resources (e.g., 626, 628, and 630, associated delays 632, associated timings 634, associated events 636, applications 638, and / or messages 640 with indicator 642 and blocking resources 644).
[0113] Resource acquisition circuitry 610 may be configured to resolve resource set 626. Resource identifier circuitry 612 may be configured to select a first resource subset 630 from resource set 626. Resource supply circuitry 614 may be configured to transmit resource set 626 to application 638, wherein the first resource subset 630 is transmitted to application 638 after a first delay 632. Resource monitoring circuitry 616 may be configured to monitor the first execution of application 638 using resource set 626 and determine a first timing 634 of event 636 during the first execution. Resource analysis circuitry 618 may be configured to determine one or more blocked resources 630 in resource set 626 for event 636, based at least in part on the first timing 634 and the first delay 632. Analysis supply circuitry 620 may be configured to transmit message 640 having an indicator 642 identifying one or more blocked resources 628.
[0114] In this embodiment, application 638 can be a web browser.
[0115] Figure 7 Another embodiment of a device 600 for identifying blocked resources is depicted, the device including, herein with respect to device 600 ( Figure 6 The resource set 626 may be one or more of the components described herein, as well as the memory device 710 and / or the collection circuitry 712. For example, the resource set 626 may be used for web pages, wherein the collection circuitry 712 may be configured to: collect the resource set 626; and / or store the resource set 626 and / or the web pages in the memory device 710. In such embodiments, the resource acquisition circuitry 610 may be further configured to retrieve the resource set 626 from the memory device 710.
[0116] In an embodiment, event 636 can be maximum content drawing, first content object drawing, visual completion, or layout tree update. In an embodiment, one or more blocking resources in blocking resources 628 can complete the necessary event 636.
[0117] In another embodiment, event 636 may also be a snappi event, as disclosed herein. In such embodiments, agility circuitry 622 may be configured to identify a snappi event by analyzing a second execution of application 648 using resource set 626.
[0118] In one embodiment, baseline acquisition circuitry 624 is configured to parse timing baseline 650 for event 636, wherein resource analysis circuitry 618 is further configured to determine one or more blocking resources 628 based at least in part on timing baseline 650.
[0119] In another embodiment, the resource analysis circuit 618 may further include a central processing unit (CPU) monitoring circuit 652 configured to: monitor the CPU on which at least a portion of the first execution of the application 638 occurs, and determine that at least one resource in the first subset of resources 626 blocks at least a portion of the first execution on the CPU. In such embodiments, the resource analysis circuit 618 is further configured to determine that one or more blocking resources 628 block at least a portion of the first execution on the CPU.
[0120] In another embodiment, the resource identifier circuit 612 may be further configured to select a second resource subset 654 from the resource set 626. The resource supply circuit 614 may be further configured to retransmit the resource set 626 to the application 638, wherein the second resource subset 654 is retransmitted to the application 638 after a second delay 656. The resource monitoring circuit 616 may be further configured to monitor a second execution of the application 638 using the resource set 626 and determine a second timing 658 of event 636 during the second execution. The resource analysis circuit 618 may be further configured to further determine one or more blocked resources 628 based at least in part on the second timing 658 and the second delay 656. The one or more blocked resources 628 may include resources in the first resource subset 630 and the second resource subset 654. The resource analysis circuit 618 may be further configured to compare a first timing 634 with a second timing 658, wherein when the first timing 634 is longer than the second timing 658, one or more blocking resources 628 may include resources in the first resource subset 630, and when the second timing 658 is longer than the first timing 634, one or more blocking resources 628 may include resources in the second resource subset 654.
[0121] refer to Figure 8A method 800 for identifying congested resources according to embodiments of the present disclosure. Method 800 may be performed via device 600 and / or any other computing device disclosed herein. Method 800 includes: resolving a resource set 810 via a resource acquisition circuit. Method 800 further includes selecting a first subset of resources 812 from a selectable resource set. The resource set may be transmitted to an application via a resource supply circuit, wherein the first subset of resources is transmitted to the application 814 after a first delay. The first execution 816 of the application using the resource set may be monitored; a first timing 818 of an event during the first execution may be determined, and one or more congested resources 820 for the event may be determined at least in part based on the first timing and the first delay. A message having an indicator 822 identifying one or more congested resources may be transmitted.
[0122] In an embodiment of method 800, the application may be a web browser, and the resource set may be available for web pages. In such an embodiment, method 800 may further include the steps of: collecting the resource set 824, storing the resource set and / or web pages in a storage device 826, and retrieving the resource set from the storage device 828.
[0123] In embodiments, the event can be a maximum content draw, full content draw, first content object draw, visual completion, update layout tree, and / or a snappi event. In embodiments where the event is a snappi event, method 800 may include identifying the snappi event 830 by analyzing a second execution of the application using the first set of resources. One or more blocking resources may be required for event completion.
[0124] In an embodiment, method 800 may further include resolving a timing baseline 832 for the event. In such embodiments, determining one or more blocking resources 820 may further be based at least in part on the timing baseline, for example, a first timing that may be longer than the expected timing defined by the timing baseline for the event. The timing baseline serves as a reference point representing the expected timing (e.g., average or longest reasonable time) within which the event should ideally occur. By establishing this baseline, the system obtains a benchmark that can be compared to the actual timing of the event. In such cases, the process of identifying one or more blocking resources at step 820 is influenced by this baseline. For example, if the observed timing of the event exceeds the expected timing defined by the baseline, this difference may indicate the presence of blocking resources for a delayed event.
[0125] Now for reference Figure 9The method 800 may further include monitoring the CPU on which at least a portion of the first execution of the application occurs. The method 800 may further include determining, at least in part, that one or more blocking resources are based on the determination of at least a portion of the first execution on the CPU that is blocking at least a portion of the first execution in a first subset of resources.
[0126] like Figure 9 Further, method 800 may include selecting a second subset of resources from the resource set 924. In such embodiments, the resource set may be retransmitted to the application, wherein the second subset of resources is retransmitted to the application after a second delay 926. Method 800 may further include: monitoring a second execution of the application using the resource set 928, and determining a second timing 930 for an event during the second execution. In such embodiments, one or more blocking resources 820 are determined ( Figure 8 This can be further based, at least in part, on a second timing and a second delay. In such embodiments, one or more blocking resources may include resources in a first subset and a second subset of resources.
[0127] Method 800 may further include comparing a first timing with a second timing 932, wherein when the first timing is longer than the second timing, one or more blocking resources may include resources in the first resource subset, and when the second timing is longer than the first timing, one or more blocking resources may include resources in the second resource subset.
[0128] Now for reference Figure 10 Another device 1000 for identifying blocked resources according to this disclosure may include: a resource acquisition circuit 1010, a resource supply circuit 1012, a resource monitoring circuit 1014, and / or a timing circuit 1016, which process and / or otherwise interact with the resource 1018 and the associated application 1020. The device 1000 may form a discovery server 110 (… Figure 1 ), prompting for server optimization 112 ( Figure 1 ), network server 114 ( Figure 1 Resource servers 116 and 118 Figure 1 (and / or any other computing device disclosed herein)
[0129] Resource acquisition circuit 1010 may be configured to load a first resource set 1018 for consumption by a first application 1020. Resource supply circuit 1012 may be configured to provide the first resource set 1018 to the first application 1020. Resource monitoring circuit 1014 may be configured to monitor the first execution of the first application 1020 using the first resource set 1018. Timing circuit 1016 may be configured to determine a first timing 1022 during the first execution of event 1024.
[0130] The resource acquisition circuit 1010 may be further configured to load a second resource set 1028 and a third resource set 1030 for consumption by the application 1020, wherein the second resource set 1028 is a subset of the first resource set 1018, and the third resource set 1030 is a subset of the first resource set 1018 that is different from the second resource set 1028.
[0131] Resource supply circuit 1012 may be further configured to provide a second resource set 1028 to first application 1020 at a first time 1032. Resource monitoring circuit 1014 may be further configured to monitor a second execution of first application 1020 using the second resource set 1028. Resource supply circuit 1012 may be further configured to provide a third resource set 1030 to first application 1020 at a second time 1034. Resource monitoring circuit 1014 may be further configured to monitor a third execution of first application 1020 using the third resource set 1030.
[0132] In an embodiment, the apparatus 1000 may further include: a resource analysis circuit 1036 configured to determine, according to a second timing 1034, the resources required for the third resource set 1030 to include event 1024; and an analysis supply circuit 1038 configured to transmit a message 1040 having an indication 1042 identifying the resources required for the third resource set 1030 to include event 1024.
[0133] In this embodiment, the application can be a web browser; and / or event 1024 can be a maximum content draw, full content draw, first content object draw, visual completion, update layout tree, and / or a snappi event.
[0134] Turn now Figure 11 A method 1100 for identifying blocked resources is illustrated. Method 1100 can be performed via device 1000 and / or any other computing device disclosed herein. Method 1100 includes: loading a first resource set for consumption by a first application 1110; providing the first resource set to the first application 1112; and monitoring the first execution of the first application utilizing the first resource set 1114. Method 1100 further includes: determining a first timing of an event during the first execution 1116; and loading a second resource set and a third resource set for consumption by the first application 1118, wherein the second resource set is a subset of the first resource set, and the third resource set is a distinct subset of the first resource set.
[0135] Method 1100 further includes: providing a second resource set 1120 to a first application at a first time, and monitoring a second execution of the first application using the second resource set 1122. Method 1100 further includes: providing a third resource set to the first application at a second time 1124, and monitoring a third execution of the first application using the third resource set 1126. Method 1100 further includes: determining a second timing 1128 for an event during the second and third executions, and determining, based on the second timing, the resources required for the event to be included in the third resource set 1130.
[0136] In this embodiment, the application can be a web browser, and the events can be maximum content draw, full content draw, first content object draw, visual completion, update layout tree, and / or snappi events.
[0137] Turn now Figure 12 Another device 1200 may include resource acquisition circuitry 1210, selection circuitry 1212, resource supply circuitry 1214, and / or resource monitoring circuitry 1216, which can process and / or interact with resources 1218, 1220, 1222, associated timings 1224, 1226, and associated applications 1228. Device 1200 may form a discovery server 110. Figure 1 ), prompting for server optimization 112 ( Figure 1 ), network server 114 ( Figure 1 Resource servers 116 and 118 Figure 1 (and / or any other computing device disclosed herein)
[0138] Resource acquisition circuit 1210 may be configured to load a first resource set 1218, and selection circuit 1212 may be configured to select a second resource set 1220 and a third resource set 1222 from the first resource set 1218, wherein the second resource set 1220 is a subset of the first resource set 1218, and the third resource set 1222 is a subset of the first resource set 1218 that is different from the second resource set 1220.
[0139] Resource supply circuitry 1214 may be configured to provide a second resource set 1220 to application 1228 at a first time, and is further configured to provide a third resource set 1222 to the first application 1228 at a second time. Resource monitoring circuitry 1216 may be further configured to monitor a second execution of the first application 1228 utilizing the third resource set 1222. Apparatus 1200 may further include timing circuitry 1230 configured to determine the timing 1232 of event 1233 during the first and second executions.
[0140] The device 1200 may further include resource analysis circuitry 1238, which is configured to determine the resources required for the third resource set 1222 to include event 1233 based on a first time, a second time, and a timing. Application 1228 may be a web browser, maximum content rendering, full content rendering, first content rendering object, visual completion, update layout tree, and / or snappi events.
[0141] Turn now Figure 13 This document illustrates another method 1300 for identifying congested resources. Method 1300 can be performed via device 1200 and / or any other computing device disclosed herein. Method 1300 includes: loading a first resource set 1310; and selecting a second resource set and a third resource set from the first resource set 1312. The second resource set may be a subset of the first resource set, and the third resource set may be a subset of the first resource set that is different from the second resource set. Method 1300 further includes: providing the second resource set to a first application at a first time 1314; and monitoring the first execution of the first application utilizing the second resource set 1316. Method 1300 further includes: providing the third resource set to the first application at a second time 1318; and monitoring the execution of the first application utilizing the third resource set 1320. Method 1300 further includes: determining the timing of an event during the first and second executions 1322; and determining, based on the first time, the second time, and the timing, the resources required for the event to be included in the third resource set 1324.
[0142] In this embodiment, the application can be a web browser, and the events can be maximum content draw, full content draw, first content object draw, visual completion, update layout tree, and / or snappi events.
[0143] Move to Figure 14 Another device 1400 for identifying blocked resources includes a resource acquisition circuit 1410, a resource identifier circuit 1412, a resource supply circuit 1414, a resource monitoring circuit 1416, a resource analysis circuit 1418, and / or an analysis supply circuit 1419, which can process and / or otherwise interact with associated resources 1420 and 1422, associated application 1424, and associated message 1426 with indicator 1428. Device 1400 may form a discovery server 110. Figure 1 ), prompting for server optimization 112 ( Figure 1 ), network server 114 ( Figure 1 Resource servers 116 and 118 Figure 1 (and / or any other computing device disclosed herein)
[0144] Resource acquisition circuitry 1410 may be configured to parse resource set 1420, and resource identifier circuitry 1412 may be configured to select a first resource subset 1422 from resource set 1420. Resource supply circuitry 1414 may be configured to transmit resource set 1420 to application 1424, wherein the first resource subset 1422 is transmitted after a first delay 1430, and resource monitoring circuitry 1416 may be configured to monitor the first execution of application 1424 using resource 1420, and further configured to monitor one or more drawing events 1432 of one or more regions of the page. Resource analysis circuitry 1418 may be configured to determine a timeline 1434 of one or more drawing events, and based on the timeline and the first delay 1430, determine that the first resource subset 1422 includes one or more blocked resources 1436 for one or more drawing events 1432. Analysis supply circuitry 1419 may be configured to transmit message 1426, wherein indicator 1428 identifies one or more blocked resources 1436.
[0145] Figure 15 An embodiment of an apparatus 1400 having a memory device 1510 and a collection circuit 1512 is depicted, wherein a resource set 1420 is used for web pages. In such an embodiment, the collection circuit 1512 is configured to collect the resource set 1420 and store the resource set 1420 and / or web pages in the memory device 1510, wherein the resource acquisition circuit 1410 may be further configured to retrieve the resource set 1420 from the memory device 1510.
[0146] Figure 16 Another method 1600 for identifying congested resources according to embodiments of the present disclosure is described. Method 1600 may be performed via device 1400 and / or any other computing device disclosed herein. Method 1600 includes: resolving a resource set 1610; selecting a first subset of resources from the resource set 1612; and transmitting the resource set 1614 to an application, wherein the first subset of resources is transmitted after a first delay. Method 1600 further includes: monitoring the first execution of the application 1616; and monitoring one or more drawing events of one or more regions of a page 1618. Method 1600 further includes: determining a timeline of one or more drawing events 1620; and determining, based on the timeline and the first delay, that the first subset of resources includes one or more congested resources for the events 1622. Method 1600 further includes transmitting a message having an indicator 1624 identifying one or more congested resources.
[0147] In one embodiment, the application may be a web browser, and the resource set may be available for web pages. In such an embodiment, method 1600 further includes: collecting the resource set 1626; storing the resource set and web pages in a memory device 1628; and retrieving the resource set from the memory device 1630.
[0148] As web pages evolve, their structure and resource dependencies frequently change, necessitating regular sanity checks to validate the validity of previously identified critical resources. Introducing new content, features, scripts, or third-party integrations can alter loading dynamics and dependencies, potentially impacting which resources are essential for an event. For example, scripts once considered non-critical might become part of page interactivity due to new functionality, or new image assets might become required for core content, thus changing their priority.
[0149] In this embodiment, sanity checks involve delaying non-critical resources. Sanity checks are verification steps used to confirm which resources are indeed unnecessary for critical page events and to verify that the list of necessary resources is correct. By delaying all or a subset of the identified non-blocking elements and observing whether this affects the timing of critical events, the system can verify that resources marked "non-critical" truly do not affect associated events.
[0150] In one embodiment, the sanity check includes loading the identified non-blocking elements of delayed events to observe whether the timing of critical events is affected. If no event delays are observed, the assumption that these elements are non-critical is validated, which also means that the identified critical resources are valid. If the sanity check fails (i.e., it reveals that delayed non-blocking elements affect event timing), a rerun of the resource analysis can be triggered.
[0151] In some embodiments, a targeted approach can be used during sanity checks by selecting only a specific subset of non-critical elements for testing. This selection can be strategically determined to maximize the effectiveness of sanity checks while minimizing unnecessary processing. The subset of elements selected for latency testing can be based on various criteria, including the type of resource, its file size, its position within the overall loading sequence, etc. For example, resources such as large images or complex JavaScript files can be prioritized for sanity checks because they often cause unexpected delays if these larger assets have a greater-than-expected impact on the timing of critical events. Additionally, resources loaded earlier in the sequence can be selected because they are more likely to interact with and potentially block key rendering milestones.
[0152] In one embodiment, a reassessment based on the failure of a "freshness" or soundness check on the new resource data may indicate that an adjustment to the resource classification may be necessary.
[0153] In some embodiments, a re-evaluation of resources may be triggered by the "freshness" of new resource data or the failure of a previous sanity check. Each of these cases serves as an indicator that adjustments to resource classifications (e.g., whether they are necessary or unnecessary for a given event) may be required. When the system identifies new resource data that has not yet been incorporated into an existing resource classification, it may prompt a re-evaluation to ensure that the latest elements and dependencies are considered in performance optimization strategies. Additionally, a failed sanity check indicates that the current classification may not accurately represent some resources as unnecessary for the event. This failure foreshadows the need for a re-evaluation.
[0154] While the examples described in this article focus on loading visual resources, it is important to note that computational resources can also block page events and impact overall page performance. Computational resources (such as JavaScript execution, layout recalculation, data parsing, etc.) consume significant amounts of CPU time and can delay important events (such as FCP, TTI). Unlike statically loaded resources, computational tasks are dynamic and can be triggered by user interaction or conditional content loading. When these computational tasks consume CPU resources, they can prevent other necessary processes from executing effectively, thus blocking or delaying important events.
[0155] In embodiments, identifying computationally intensive tasks may include analyzing specific operations that require CPU power, such as heavy JavaScript interactions, DOM updates, style recalculations, and other tasks triggered during user interaction or content loading. These CPU-intensive tasks can produce significant latency, especially on resource-constrained devices, as they prevent the browser from responding to user input or efficiently loading other necessary resources. In many web pages, computational tasks are often dynamic, initiated by scripts, user actions, or conditional content loading.
[0156] For example, JavaScript files may be necessary for computational tasks that dynamically update content, while certain fonts or styles may trigger layout recalculations, which consume CPU time and delay the initiation of critical events.
[0157] This document discloses embodiments and applications for optimizing web page performance by introducing novel techniques for selecting and deploying browser tips. The disclosed techniques address common inefficiencies that can arise when using tips (e.g., pre-connecting, preloading, and priority tips) in situations unsuitable for real-world conditions. In current systems, tips are often applied uniformly, regardless of the environment in which they operate. This lack of adaptability can lead to inefficiencies because tips may not be suitable for specific network conditions or device capabilities, resulting in slower loading times and suboptimal user experiences.
[0158] In one example, preloading or pre-connecting resources without considering available bandwidth can overwhelm limited network resources. For instance, in a low-bandwidth environment, preloading multiple large resources can slow down the delivery of critical assets, thus delaying visible content that users need to interact with on the page. Additionally, some devices may lack the computational resources required to efficiently process all preloaded or prioritized assets, leading to browser stress and ultimately degrading page performance. The disclosed techniques allow for more proactive, cue-based deployment strategies tailored to available bandwidth and / or computing power, thus preventing such bottlenecks.
[0159] The disclosed technique utilizes a feedback-driven approach to fine-tune the cue configuration. By analyzing metrics from past page loads, the method identifies which cue suggestions are beneficial in different scenarios, effectively balancing resource-intensive preloading with selective pre-connection. This allows the system to avoid unnecessary resource consumption and prioritize only those cue suggestions that meaningfully speed up loading times.
[0160] Furthermore, the system optimizes the timing of prompt deployment to select the optimal moment to apply each prompt. In one example, prompts can be provided during two distinct phases. The first phase occurs before the root HTML document arrives, where the browser can begin loading necessary resources early using either Early Prompts (HTTP 103) or Optimization Guidelines Service (OGS) prompts in Chromium browsers. These early prompts allow the browser to pre-connect to necessary domains, preload critical assets, or prioritize important resources before receiving the main HTML document. Early prompts are particularly effective at reducing latency because they allow the browser to initiate connections and resource loading while waiting for the full page content, resulting in faster initial rendering times.
[0161] The second phase occurs along with the arrival of the root HTML document, where a prompt may be delivered as part of the response. In one example, the second phase may occur with an HTTP 200 response header, or it may be embedded directly within the HTML of the root object itself. For example, a webpage's HTTP 200 response might include headers telling the browser to preload CSS files or pre-connect to an external image CDN.
[0162] The process for determining which resources should receive different types of prompts (e.g., pre-connect, pre-load, pre-fetch, etc.) and / or the timing of prompts (e.g., early HTTP 103 and / or HTTP 200) may include initial data collection and feedback-driven refinement steps. In one example, the process may begin by collecting data on resource loading behavior during page load in both simulated and real-world scenarios. This data includes information about resource types (e.g., images, CSS, JavaScript), file sizes, load times, and network requests. Additionally, event data (e.g., maximum content rendering (LCP), render events, etc.) and corresponding blocking resources can be determined using the techniques described herein. Using the identified resources, the system can assign appropriate prompt types to the blocking resources.
[0163] In one embodiment, the process may change the type of prompt associated with the blocked resource and monitor webpage metrics (e.g., load time, agility, etc.) to determine which allocation results in optimal performance (e.g., minimum load time, fastest response time, etc.).
[0164] In one embodiment, the process can systematically experiment with combinations of different hint types assigned to resources. This experimentation may involve testing the timing of various permutations of pre-connected, preloaded, pre-fetched, and priority hints and / or hints across the entire set of page resources (e.g., CSS files, JavaScript, images, and external fonts) to determine which combinations produce optimal performance. Systematic testing can begin by isolating each resource and applying a separate hint type, then progressively combining and testing multiple hints. For example, an initial test might assign a pre-connected hint to a CSS file, while a preloaded hint is assigned to the main image required for the initial render. As testing progresses, the system evaluates metrics such as page render time, timing of draw events, overall network latency, etc., to measure the effectiveness of each hint configuration. The experimentation process may include various timing options for each hint type, such as deploying hints early (e.g., using HTTP 103 early hints) or waiting for them to be included in the main HTML (e.g., using HTTP 200 responses).
[0165] In one embodiment, the process may leverage heuristics to experiment with different combinations of hint types assigned to each resource, aiming to identify the optimal configuration for a particular page load scenario. This heuristic-driven approach intelligently narrows down the number of hint configurations to be tested, focusing on combinations more likely to improve load performance based on prior knowledge, best practices, and contextual information about the page and its resources. Instead of exhaustively testing every possible combination, heuristics allows the process to focus on the most promising configurations, making the experimentation phase more efficient and less resource-intensive. Heuristics may consider factors such as resource criticality, dependency chains, and loading sequences. For example, the system may prioritize applying preload hints to rendering-blocking resources such as CSS files or images in the viewport, while pre-connection hints may be applied to external domains hosting necessary scripts or media files. Additionally, heuristics may assign lower priority to hints for non-critical resources, such as those that only load when the user begins scrolling.
[0166] In one embodiment, the process can leverage a trained machine learning model to intelligently experiment with different combinations of hint types assigned to each resource to suit the specific needs of each page load scenario. By utilizing models trained on historical data and previous page load performance, the system can predict which hint combinations are likely to produce the most efficient load times, allowing it to selectively experiment with the most promising configurations. This approach reduces the computational cost of exhaustive testing by focusing on combinations aligned with established performance patterns and resource priorities.
[0167] Testing of prompts can be conducted in real-world or simulated environments. In real-world environments, prompt configurations can be tested under actual user conditions, providing in-depth insights into how prompts function under real-world device hardware, network variability, and user behavior. Real-world testing allows for accurate evaluation of prompt effectiveness in live scenarios, revealing how well prompts can improve loading times and user experience under a range of unpredictable conditions. Testing in real-world environments also helps detect edge cases or unexpected interactions that might not surface under controlled conditions.
[0168] Testing of hints can be conducted in a simulation environment. Simulation environments provide control over a wide range of variables, such as device specifications, network characteristics, and cache state, enabling system experimentation with hint configurations. In controlled settings, testing can be performed across various constrained scenarios, including high-latency networks, limited bandwidth, and low-power devices, without being affected by random external factors. Simulation testing is particularly advantageous during the tuning phase because it allows the system to fine-tune hint combinations to determine the optimal configuration for different conditions before widespread deployment. By adjusting specific parameters (e.g., browser version, operating system, cache state, and network conditions), simulation environments provide in-depth understanding of how hints affect load times and performance consistency across a wide variety of configurations and / or how hints can be tailored for specific configurations.
[0169] Figure 17 The image shows an embodiment of a device 1700 for optimizing webpage prompts. Device 1700 can form a discovery server 110 (…). Figure 1 ), prompting for server optimization 112 ( Figure 1 ), network server 114 ( Figure 1 Resource servers 116 and 118 Figure 1 This device is part of and / or any other computing device disclosed herein. The apparatus 1700 includes a prompt acquisition circuit 1702, a combination circuit 1704, an automatic tuning circuit 1706, and a performance supply circuit 1708.
[0170] The prompt acquisition circuit 1702 is configured to parse prompt data 1710, which defines multiple prompts 1712 configured to facilitate the loading of webpage 1714. The combination circuit 1704 is configured to generate multiple prompt combinations 1716 from the multiple prompts 1712. The auto-tuning circuit 1706 is configured to use a prompt combination 1716 to load webpage 1714 for each of the multiple prompt combinations 1716. The auto-tuning circuit 1706 is further configured to determine a timing 1718 for an event 1720 associated with the loading of webpage 1714 for each loading of webpage 1714. Furthermore, the auto-tuning circuit 1706 is further configured to generate performance data 1722 of the multiple prompt combinations 1716 based at least in part on the timing 1718. The performance supply circuit 1708 is configured to transmit the performance data 1722.
[0171] In one embodiment, the plurality of prompts 1712 include information 1728 for locating one or more resources 1724 for loading webpage 1714. In another example embodiment, the plurality of prompts 1712 include one or more sub-generic resource locators (URLs) 1726. In another example embodiment, resource 1724 is an element rendered on webpage 1714. In an example embodiment, resource 1724 is a graphic.
[0172] In an embodiment, event 1720 can be maximum content drawing, full content drawing, drawing event, first content object drawing, visual completion, and / or updating the layout tree.
[0173] In an embodiment, the combinational circuit 1704 may be further configured to generate a plurality of cue combinations 1716 based at least in part on event 1720. In an embodiment, event 1720 may be a snappi event. For example, embodiments of the combinational circuit may generate cue combinations by searching for browser cue combinations using a cluster of web browsers to automatically find suitable and / or optimal pre-connection, pre-loading, priority cue and / or other types of cue, and find the optimal timing for delivering them to improve and / or maximize perceived user agility. For example, the generation of cue combinations may be based at least in part on changing one or more cue variables associated with a resource, such as fetch priority, whether to pre-connect, pre-fetch and / or pre-load specific resources, etc. In an embodiment, the cue combination may be a set of cue with a specific set of priorities / tags associated with one or more resources. For example, a first subset of the cue combinations may include cue that has been designated for pre-fetching, while a second subset of the cue combinations may include cue that has been designated for pre-connection, the opposite of pre-fetching. Other combinations may change the members of the first and / or second sets and / or change other attributes of the resources, such as priority. For example, hints in the first subset may be given higher priority than hints in the second subset. In embodiments, the combination may include a first subset of hints designated for early hint injection (e.g., for retrieval via a hint server), while a second subset of hints may be designated for late hint injection (e.g., hints that may be delivered with the root of a webpage). In other words, embodiments of the hint combination may vary as the hints are to be delivered, for example, early delivery via a hint server or late delivery using the webpage root, and / or the positivity / priority of the hints may change, for example, high, medium, low, etc. In embodiments, early hints may be hints that arrive at the web browser before the root of the webpage is received, such as an HTTP 103 early hint from a Content Delivery Network (CDN), and late hints may be hints that are received with the root of the webpage or after the root of the webpage is received, for example, within the header of the webpage or embedded in the HTML of the root and / or as part of an HTTP 200 response.
[0174] In one embodiment, performance data 1722 includes one or more timings in timing 1718 and / or one or more cue combinations in multiple cue combinations 1716. In another embodiment, performance data 1722 associates each of the one or more timings 1718 with one cue combination in multiple cue combinations 1716.
[0175] In an embodiment, at least one hint combination in hint combination 1716 includes an ordered set of hints that includes at least some of the plurality of hints 1712. In an example embodiment, the ordered set of hints can be at least partially based on a pre-extraction priority. In another example embodiment, the ordered set of hints can be at least partially based on a network resource. In another example embodiment, the ordered set of hints can be at least partially based on the expected bandwidth of at least one network connection. In another example embodiment, the ordered set of hints can be at least partially based on computing resources. In an example embodiment, the ordered set of hints can be at least partially based on available memory.
[0176] Figure 18 is an example embodiment of apparatus 1700, which further includes a priority circuit 1810 configured to generate hint priority tags 1812 for elements of web page 1714 based at least in part on performance data 1722, such as the "fetchpriority='high'" added to the HTML tag of an image, such as <img src="photo.jpg" fetchpriority="high". Embodiments can also have a priority tag supply circuit 1814 configured to transmit the hint priority tags 1812. Although the foregoing examples disclose hint priority tags with respect to HTML, it should be understood that embodiments of hint priority tags can be applied to other types of tag languages, such as XML and / or other languages and / or systems that can give priorities to objects. In other words, in an embodiment, the hint priority tag 1812 can be any type of data value or construct that assigns and / or sets a priority value to a data object.
[0177] Figure 19 is Figure 17 an example embodiment of apparatus 1700 in which apparatus 1700 further includes an annotation circuit 1910 configured to inject the hint priority tags 1812 into the web page 1714. In an example embodiment, the hint priority tags 1812 are configured to be injected / inserted into the hypertext markup language (HTML) data file of the web page 1714.
[0178] In an embodiment, the auto-tuning circuit 1706 can be further configured to analyze the performance data and select one of the hint combinations 1716 as the best / optimized hint combination for improving the agility of the web page by improving the load and / or render time of the improvement event 1720.
[0179] Figure 20This is an example method 2000 that can be performed via device 1700 and / or any other computing device disclosed herein. Method 2000 includes parsing prompt data via prompt acquisition circuitry to define a plurality of prompts configured to facilitate the loading of a webpage 2010. Furthermore, the method generates a plurality of prompt combinations from the plurality of prompts via combination circuitry 2012, and loads the webpage 2014 using the prompt combination for each of the plurality of prompt combinations via automatic tuning circuitry.
[0180] The method further includes: determining, for each load of a webpage and via an automatic tuning circuit, the timing of events associated with the load of the webpage 2016; and generating performance data for a combination of multiple prompts via the automatic tuning circuit and at least in part based on the timing 2018. Finally, the method includes transmitting the performance data via a performance supply circuit 2020.
[0181] In an example embodiment, the prompts include information for locating one or more resources used to load the webpage. In an example embodiment, the prompts include one or more sub-generic resource locators (URLs). In an example embodiment, resources are elements rendered on the webpage. In an example embodiment, these elements include graphics. In an embodiment, the prompts may include indications of the location / domain of a pre-loaded resource or pre-connection to a resource.
[0182] In the example embodiment, Figure 20 The event in this example is maximum content draw. In other example implementations, the event is full content draw. In an example implementation, the event is first content object draw. In an example implementation, the event is visual completion. In an example implementation, the event is update layout tree.
[0183] In some example embodiments of method 2000, the generation of multiple prompt combinations 2012 is at least partially based on an event. In an example embodiment, the event is a snappi event.
[0184] Furthermore, in some example embodiments of method 2000, the performance data includes one or more timings among the timings. In example embodiments, the performance data further includes one or more cue combinations among a plurality of cue combinations. In some example embodiments, the performance data associates each of the one or more timings with one cue combination among the plurality of cue combinations.
[0185] refer to Figure 20In method 2000, in some example embodiments, at least one of the prompt combinations comprises an ordered set of at least some of the prompts. And in some example embodiments, the ordered set of prompts is at least partially based on pre-fetch priority. In some example embodiments, the ordered set of prompts is at least partially based on network resources. In example embodiments, the ordered set of prompts is at least partially based on the expected bandwidth of at least one network connection. In other example embodiments, the ordered set of prompts is at least partially based on computing resources. In example embodiments, the ordered set of prompts is at least partially based on available memory.
[0186] Now for reference Figure 21 In an example embodiment, method 2000 further includes generating prompt priority tags 2110 for elements of a webpage, at least in part based on performance data, via a priority circuit. Furthermore, method 2000 may further include transmitting prompt priority tags 2112 via a priority tag supply circuit.
[0187] refer to Figure 22 In an example embodiment, method 2000 further includes injecting priority tags into the Hypertext Markup Language (HTML) data file of the webpage 2210.
[0188] An example embodiment relates to a non-transitory computer-readable medium storing instructions that, when loaded into at least one processor, cause the processor to parse prompt data, the prompt data defining multiple prompts constructed to facilitate webpage loading. The non-transitory computer-readable medium can generate multiple prompt combinations from the multiple prompts, and for each of the multiple prompt combinations, use the prompt combination to load the webpage. Furthermore, the medium can determine the timing of events associated with the loading of the webpage for each loading of the webpage, and generate performance data for the multiple prompt combinations based at least in part on the timing. Finally, the medium can transmit the performance data.
[0189] In example embodiments of this non-transitory computer-readable medium, multiple prompts include information for locating one or more resources used to load the webpage. Furthermore, in some example embodiments of this medium, multiple prompts include one or more sub-generic resource locators (URLs). In example embodiments of this medium, the one or more resources are elements rendered on the webpage. In some embodiments, the elements are graphics.
[0190] In an example embodiment of this non-transitory computer-readable medium, the event is maximum content drawing. In some examples, the event is full content drawing. In some examples, the event is first content object drawing. In some examples, the event is visual completion. And in some examples, the event is updating the layout tree.
[0191] In an example embodiment of this non-transitory computer-readable medium, the stored instructions further cause at least one processor to generate multiple combinations of prompts, at least in part, based on events. In the example, the event is a snappi event.
[0192] In some examples of this non-transitory computer-readable medium, the performance data includes one or more timings. In some examples of this medium, the performance data further includes one or more combinations of prompts. In the examples, the performance data associates each of the one or more timings with one of the combinations of prompts.
[0193] In example embodiments of this non-transitory computer-readable medium, at least one of the prompt combinations comprises an ordered set of at least some of the prompts. In some example embodiments, the ordered set of prompts is at least partially based on prefetch priority. In some examples, the ordered set of prompts is at least partially based on network resources. In some examples, the ordered set of prompts is at least partially based on the expected bandwidth of at least one network connection. In some embodiments of the medium, the ordered set of prompts is at least partially based on computing resources, and in some examples, the ordered set of prompts is at least partially based on available memory.
[0194] In an example embodiment of the non-transitory computer-readable medium, the stored instructions further cause at least one processor to generate hint priority tags for elements of the webpage, at least in part, based on performance data, and transmit the hint priority tags.
[0195] In an example embodiment of this medium, the stored instructions further instruct at least one processor to inject a priority tag into the webpage. In some examples, the stored instructions further instruct at least one processor to inject a priority tag into the webpage's Hypertext Markup Language (HTML) data file.
[0196] Figure 23 This is an example of device 2300, which includes a prompt acquisition circuit 2310, a combination circuit 2312, an automatic optimization circuit 2314, and a recommendation supply circuit 2316. Device 2300 can form a discovery server 110 ( Figure 1 ), prompting for server optimization 112 ( Figure 1 ), network server 114 ( Figure 1 Resource servers 116 and 118 Figure 1This is part of, and / or any other computing device disclosed herein. The prompt acquisition circuit 2310 may be configured to parse prompt data 2320, which is configured to facilitate the loading of webpage 2324 using multiple prompts 2322. The combination circuit 2312 may be configured to generate multiple prompt combinations 2326 from the multiple prompts 2322. The automatic tuning circuit 2314 may be configured to load webpage 2324 using a prompt combination 2326 for each of the multiple prompt combinations 2326. Furthermore, the automatic tuning circuit 2314 may, for each loading of webpage 2324, determine a timing 2328 for an event 2330 associated with the loading of webpage 2324, and the automatic tuning circuit 2314 may select a prompt combination 2332 from the multiple prompt combinations 2326 based at least in part on the timing 2328. The recommendation supply circuit 2316 may be configured to transmit the selected prompt combination 2332.
[0197] In an embodiment, the automatic tuning circuit 2314 may be further configured to generate multiple cue combinations 2326 based at least in part on the expected network resources 2334 associated with the multiple cue 2322.
[0198] In the example embodiment, the network resource 2334 is expected to include and / or otherwise be based at least in part on at least one of the following: bandwidth, latency, or cost.
[0199] In an embodiment, the automatic tuning circuitry 2314 may be further configured to generate a plurality of cue combinations 2326 based at least in part on the expected computing resources 2336 associated with the plurality of cue combinations 2322. In an example embodiment, the expected computing resources 2336 may include and / or otherwise be based at least in part on at least one of: cache or processing power.
[0200] Figure 24 This is an example embodiment of method 2400, which can be performed via device 2300 and / or any other computing device disclosed herein. Method 2400 includes parsing prompt data via prompt acquisition circuitry, the prompt data defining a plurality of prompts 2410 configured to facilitate the loading of a webpage. Method 2400 may further include: generating a plurality of prompt combinations 2412 from the plurality of prompts via combination circuitry, and loading a webpage 2414 using the prompt combinations for each of the plurality of prompt combinations and via auto-tuning circuitry. Method 2400 may also include: determining, for each loading of the webpage and via auto-tuning circuitry, timing 2416 of events associated with the loading of the webpage, and selecting a prompt combination 2418 from the plurality of prompt combinations at least in part based on the timing via auto-tuning circuitry. Method 2400 may also include transmitting the selected prompt combination 2420 via a recommendation supply circuitry.
[0201] In an example embodiment, method 2400 may generate multiple cues combinations based at least in part on anticipated network resources associated with multiple cues. In an example embodiment, anticipated network resources may be based at least in part on at least one of the following: bandwidth, latency, or cost.
[0202] In an example embodiment, generating multiple suggestion combinations 2412 may be based at least in part on expected computing resources associated with the multiple suggestions. In an example embodiment, the expected computing resources may be based at least in part on at least one of the following: cache or processing power.
[0203] An example embodiment includes a non-transitory computer-readable medium storing instructions that, when loaded into at least one processor, cause the processor to: parse prompt data defining a plurality of prompts configured to facilitate the loading of a webpage. Furthermore, the non-transitory computer-readable medium can generate a plurality of prompt combinations from the plurality of prompts, and for each of the plurality of prompt combinations, use the prompt combination to load the webpage. Additionally, the medium can, for each loading of the webpage, determine the timing of an event associated with the loading of the webpage, and select a prompt combination from the plurality of prompt combinations based at least in part on the timing. Finally, the medium can transmit the selected prompt combination.
[0204] In an example embodiment of the non-transitory computer-readable medium, the stored instructions may further enable at least one processor to generate multiple combinations of prompts based at least in part on anticipated network resources associated with the multiple prompts.
[0205] In an example embodiment of this non-transitory computer-readable medium, network resources are expected to be based at least in part on at least one of the following: bandwidth, latency, or cost.
[0206] In an example embodiment of the non-transitory computer-readable medium, the stored instructions may be further configured to generate multiple combinations of prompts based at least in part on anticipated computing resources associated with the multiple prompts.
[0207] In an example embodiment of this non-transitory computer-readable medium, computing resources are expected to be based at least in part on at least one of the following: cache or processing power.
[0208] Figure 25 An apparatus 2500 according to an embodiment of the present disclosure is depicted, which combines aspects of identifying necessary resources and automatic tuning suggestions to accelerate their loading. The apparatus 2500 may form a discovery server 110 ( Figure 1 ), prompting for server optimization 112 ( Figure 1 ), network server 114 ( Figure 1 Resource servers 116 and 118 Figure 1This device may be part of a resource acquisition circuit 2510, a resource identifier circuit 2512, a resource supply circuit 2514, a resource monitoring circuit 2516, a resource analysis circuit 2518, a prompt acquisition circuit 2520, a prompt combination circuit 2521, an automatic optimization circuit 2522, and / or a recommendation circuit 2524.
[0209] Resource acquisition circuit 2510 is configured to parse resource set 2526 for a webpage, and resource identifier circuit 2512 is configured to select a first resource subset 2528 from resource set 2526. Resource supply circuit 2514 is configured to transmit resource set 2526 to a web browser, wherein the first resource subset 2528 is transmitted to the web browser after a first delay 2530. Resource monitoring circuit 2516 is configured to monitor the first execution of the web browser using resource set 2526 to load the webpage and determine a first timing 2531 of the event during the first execution. Resource analysis circuit 2518 is configured to determine one or more blocking resources 2532 in resource set 2526 for the event, at least in part, based on the first timing 2531 and the first delay 2530. The prompt acquisition circuit 2520 is configured to parse prompt data 2534, which defines multiple prompts configured to facilitate the pre-fetching of one or more blocking resources 2532 as part of webpage loading, and the combination circuit 2521 is configured to generate multiple prompt combinations 2536 from the multiple prompts. The automatic tuning circuit 2522 is configured to: for each of the multiple prompt combinations, load a webpage using a web browser and the prompt combination 2536; for each webpage load, determine the timing 2538 of an event associated with the webpage loading; generate performance data 2540 of the multiple prompt combinations 2536 based at least in part on the timing 2538; and select a prompt combination 2542 from the multiple prompt combinations 2536 based at least in part on the timing 2538. The recommended supply circuit 2524 is configured to transmit the selected prompt combination 2542.
[0210] Figure 26 A system 2600 according to an embodiment of the present disclosure is described, which combines aspects of identifying necessary resources and automatic tuning prompts to accelerate their loading. System 2600 includes a Snappi event identifier circuit 2610, a prompt implementation circuit 2612, and a recommendation provisioning circuit 2614, one or more of which can form a discovery server 110 (…). Figure 1 ), prompting for server optimization 112 ( Figure 1 ), network server 114 ( Figure 1 Resource servers 116 and 118 Figure 1 (and / or any other computing device disclosed herein)
[0211] Snappi event identifier circuitry 2610 is configured to parse resource set 2616 for the webpage and identify one or more blocking resources 2618. Prompt implementation circuitry 2612 is configured to: parse data defining multiple prompts 2620 configured to facilitate the pre-fetching of one or more blocking resources 2532 as part of loading the webpage; and generate a recommended prompt set 2622 of one or more prompts from the multiple prompts 2620. Recommendation supply circuitry 2614 is configured to transmit the recommended prompt set 2622.
[0212] The embodiments disclosed herein further include systems and methods for mapping the results of exhaustive cue testing into actionable rules. After testing various cue combinations in a simulated environment to identify those that maximize page load performance, these optimized configurations are refined into rules. These rules allow browsers or optimization systems to apply the most effective cue only to each unique page type or URL. This simplification not only streamlines the decision-making process but also ensures that optimized cueing is applied in real-world scenarios without requiring significant computational resources to re-evaluate all cue combinations.
[0213] To facilitate this process, a binary tree structure is utilized, which can quickly determine the optimal combination of prompts based on specific page features, such as page type or URL pattern. By organizing the prompt selection process within the binary tree, the system can quickly traverse potential prompt configurations, thereby selecting the most effective set for a given page structure or user scenario.
[0214] In some cases, web pages may include tips that conflict with the set of optimization tips determined by the embodiments described herein. In some cases, developers may include tips in web pages with HTML tags, HTTP headers, and JavaScript to provide the browser with instructions on how to handle specific resources during page load. While developer-defined tips are intended to speed up page load, they may sometimes conflict with the system's optimization tip configuration. Such conflicts can lead to redundant or suboptimal loading behavior because developer-specified tips may not take into account real-time conditions or specific page characteristics. By programmatically removing or modifying these developer tips, the system ensures that only the most effective context-aware tips are active during page load.
[0215] In this embodiment, API calls can be used as a direct method for applications to control prompts by communicating with a content delivery network (CDN) or server infrastructure. For example, an API endpoint can enable a system to override prompts already embedded in a server response. This allows the system to selectively disable certain prompts that could otherwise slow down page loads or cause unnecessary resource consumption.
[0216] Modifications to existing webpage tooltips can include injecting JavaScript into the page. JavaScript injection allows the system to dynamically modify or remove existing tooltips within the browser's Document Object Model (DOM) and can be used when processing static HTML, where tooltips are hard-coded and cannot be changed via server-side configuration. By injecting scripts that control the application or priority of tooltips, the system can fine-tune resource loading at the browser level, ensuring that critical resources are prioritized based on the latest conditions and optimizations.
[0217] The system can also directly modify HTML code, especially persistent hints embedded in HTML headers or bodies. This method involves rewriting the HTML before the browser fully renders the page to remove, change, or reprioritize certain hints. By modifying the HTML structure, the system can remove unnecessary pre-fetched or preloaded links that could otherwise overload the network or delay the loading of other necessary elements.
[0218] This method is used to identify tips on a page, compare them with an optimization tip list, and generate instructions to modify them. These instructions can be sent to a CDN server.
[0219] The following describes one or more additional aspects of the example systems, apparatus, and methods, any one or more of which may be incorporated into certain embodiments.
[0220] Clause 1. An apparatus comprising: a resource acquisition circuit configured to resolve a resource set; a resource identifier circuit configured to select a first subset of resources from the resource set; a resource supply circuit configured to transmit the resource set to an application, wherein the first subset of resources is transmitted to the application after a first delay; a resource monitoring circuit configured to monitor a first execution of the application using the resource set and determine a first timing of an event during the first execution; a resource analysis circuit configured to determine one or more blocked resources in the resource set for the event, based at least in part on the first timing and the first delay; and an analysis supply circuit configured to transmit a message including an indicator identifying one or more blocked resources.
[0221] Clause 2. The apparatus described in Clause 1, wherein the application is a web browser.
[0222] Clause 3. The apparatus according to Clause 2 further includes: a memory device; and a collection circuit; wherein: a resource set is used for web pages; the collection circuit is configured to collect resources for web pages for the resource set, and store the resource set and web pages in the memory device; and the resource acquisition circuit is further configured to retrieve the resource set from the memory device.
[0223] Clause 4. The apparatus as described in Clause 1, wherein the event is the maximum content drawing.
[0224] Clause 5. The apparatus as described in Clause 1, wherein the event is drawn in full content.
[0225] Clause 6. The apparatus as described in Clause 1, wherein the event is the first drawing of the content object.
[0226] Clause 7. The apparatus according to Clause 1, wherein the event is a drawing event.
[0227] Clause 8. The apparatus according to Clause 1, wherein the event is visually completed.
[0228] Clause 9. The apparatus as described in Clause 1, wherein the event is updating the layout tree.
[0229] Clause 10. The apparatus as described in Clause 1, wherein the event is a snappi event.
[0230] Clause 11. The apparatus according to Clause 10 further includes: an agility circuit configured to identify a snappi event by analyzing a second execution of an application using the resource set.
[0231] Clause 12. The apparatus according to Clause 1, wherein one or more blocking resources are required for the completion of the event.
[0232] Clause 13. The apparatus of Clause 1 further includes: a baseline acquisition circuit configured to parse a timing baseline for an event; wherein the resource analysis circuit is further configured to determine one or more blocking resources based at least in part on the timing baseline.
[0233] Clause 14. The apparatus of Clause 13, wherein the resource analysis circuitry is further configured to determine one or more blocking resources based at least in part on a first timing ratio to an expected timing length defined by a timing baseline for the event.
[0234] Clause 15. The apparatus of Clause 1, wherein the resource analysis circuitry includes: a central processing unit (CPU) monitoring circuitry configured to: monitor the CPU on which at least a portion of the first execution of an application occurs; and determine at least a portion of the first execution of a first resource in a first subset of resources blocking the CPU; wherein the resource analysis circuitry is further configured to determine one or more blocked resources based at least in part on the determination of at least a portion of the first execution of a first resource in the first subset of resources blocking the CPU.
[0235] Clause 16. The apparatus of Clause 1, wherein: the resource identifier circuitry is further configured to select a second subset of resources from the resource set; the resource supply circuitry is further configured to retransmit the resource set to the application, wherein the second subset of resources is retransmitted to the application after a second delay; the resource monitoring circuitry is further configured to: monitor a second execution of the application using the resource set, and determine a second timing of an event during the second execution; and the resource analysis circuitry is further configured to further determine one or more blocking resources based at least in part on the second timing and the second delay.
[0236] Clause 17. The apparatus according to Clause 16, wherein one or more blocking resources comprise resources in a first subset of resources and a second subset of resources.
[0237] Clause 18. The apparatus of Clause 16, wherein the resource analysis circuitry is further configured to compare a first timing with a second timing, wherein: when the first timing is longer than the second timing, one or more blocked resources include resources in the first subset of resources; and when the second timing is longer than the first timing, one or more blocked resources include resources in the second subset of resources.
[0238] Clause 19. A method comprising: resolving a resource set via a resource acquisition circuit; selecting a first subset of resources from the resource set via a resource identifier circuit; transmitting the resource set to an application via a resource supply circuit, wherein the first subset of resources is transmitted to the application after a first delay; monitoring a first execution of an application using the resource set via a resource monitoring circuit; determining a first timing of an event during the first execution via the resource monitoring circuit; determining one or more blocked resources in the resource set for the event via a resource analysis circuit and based at least in part on the first timing and the first delay; and transmitting a message via the analysis supply circuit, the message including an indicator identifying the one or more blocked resources.
[0239] Clause 20. The method described in Clause 19, wherein the application is a web browser.
[0240] Clause 21. The method according to Clause 20, wherein: the resource set is used for web pages; and the method further includes: collecting the resource set for web pages via a collection circuit; storing the resource set and web pages in a memory device via the collection circuit; and retrieving the resource set from the memory device via a resource acquisition circuit.
[0241] Clause 22. The method described in Clause 19, wherein the event is the maximum content drawing.
[0242] Clause 23. The method described in Clause 19, wherein the event is drawn in full content.
[0243] Clause 24. The method described in Clause 19, wherein the event is a drawing event.
[0244] Clause 25. The method described in Clause 19, wherein the event is the first drawing of the content object.
[0245] Clause 26. The method described in Clause 19, wherein the event is visually completed.
[0246] Clause 27. The method described in Clause 19, wherein the event is an update of the layout tree.
[0247] Clause 28. The method described in Clause 19, wherein the event is a snappi event.
[0248] Clause 29. The method described in Clause 28 further includes: identifying a snappi event by analyzing a second execution of an application using a set of resources via an agile circuit.
[0249] Clause 30. The method described in Clause 19, wherein one or more blocking resources are required for the completion of the event.
[0250] Clause 31. The method according to Clause 19 further comprises: resolving a timing baseline for an event via a baseline acquisition circuit; wherein one or more blocking resources are further determined via a resource analysis circuit based at least in part on the timing baseline.
[0251] Clause 32. The method according to Clause 31, wherein the determination of one or more blocking resources via resource analysis circuitry is further based at least in part on a first timing ratio to an expected timing length defined by a timing baseline for the event.
[0252] Clause 33. The method according to Clause 19 further comprises: monitoring the CPU on which at least a portion of the first execution of the application occurs via a central processing unit (CPU) monitoring circuit; and determining, via a CPU monitoring circuit, at least one resource in a first subset of resources blocks at least a portion of the first execution on the CPU; wherein the determination of one or more blocked resources via a resource analysis circuit is based at least in part on the determination of at least one resource in the first subset of resources blocking at least a portion of the first execution on the CPU.
[0253] Clause 34. The method according to Clause 19, further comprising: selecting a second subset of resources from a resource set via a resource identifier circuit; retransmitting the resource set to the application via a resource supply circuit, wherein the second subset of resources is retransmitted to the application after a second delay; monitoring a second execution of the application using the resource set via a resource monitoring circuit; and determining a second timing of an event during the second execution via the resource monitoring circuit; wherein the determination of one or more blocking resources via a resource analysis circuit is further based at least in part on the second timing and the second delay.
[0254] Clause 35. The method according to Clause 34, wherein one or more blocking resources include resources in a first subset of resources and a second subset of resources.
[0255] Clause 36. The method according to Clause 34 further includes: comparing a first timing with a second timing via a resource analysis circuit, wherein: when the first timing is longer than the second timing, one or more blocked resources include resources in the first resource subset; and when the second timing is longer than the first timing, one or more blocked resources include resources in the second resource subset.
[0256] Clause 37. A non-transitory computer-readable medium storing instructions that, when loaded into at least one processor, cause at least one processor to: resolve a set of resources; select a first subset of resources from the set of resources; transfer the set of resources to an application, wherein the first subset of resources is transferred to the application after a first delay; monitor the first execution of an application using the set of resources; determine a first timing of an event during the first execution; determine one or more blocking resources in the set of resources for the event, based at least in part on the first timing and the first delay; and transfer a message including an indicator identifying the one or more blocking resources.
[0257] Clause 38. The non-transitory computer-readable medium described in Clause 37, wherein the application is a web browser.
[0258] Clause 39. The non-transitory computer-readable medium as described in Clause 38, wherein: the resource set is for web pages; and the stored instructions are further configured to cause at least one processor to: collect the resource set; store the resource set and web pages in a memory device; and retrieve the resource set from the memory device.
[0259] Clause 40. A non-transitory computer-readable medium as described in Clause 37, wherein the event is the maximum content drawing.
[0260] Clause 41. A non-transitory computer-readable medium as described in Clause 37, wherein the event is a full-content drawing.
[0261] Clause 42. The non-transitory computer-readable medium as described in Clause 37, wherein the event is a drawing event.
[0262] Clause 43. A non-transitory computer-readable medium as described in Clause 37, wherein the event is the first drawing of the content object.
[0263] Clause 44. A non-transitory computer-readable medium as described in Clause 37, wherein the event is visually completed.
[0264] Clause 45. A non-transitory computer-readable medium as described in Clause 37, wherein the event is an update of the layout tree.
[0265] Clause 46. A non-transitory computer-readable medium as described in Clause 37, wherein the event is a snappi event.
[0266] Clause 47. A non-transitory computer-readable medium as described in Clause 46, wherein the instructions stored therein further enable at least one processor to: identify a snappi event by analyzing a second execution of an application using the resource set.
[0267] Clause 48. A non-transitory computer-readable medium as described in Clause 37, wherein one or more blocking resources are required for the completion of an event.
[0268] Clause 49. A non-transitory computer-readable medium as described in Clause 37, wherein the stored instructions further cause at least one processor to: parse a timing baseline for an event; wherein the determination of one or more blocking resources is further based at least in part on the timing baseline.
[0269] Clause 50. The non-transitory computer-readable medium as described in Clause 49, wherein the determination of one or more blocking resources is further based at least in part on a first timing longer than the expected timing length defined by a timing baseline for the event.
[0270] Clause 51. The non-transitory computer-readable medium as described in Clause 37, wherein the stored instructions further cause at least one processor to: monitor a central processing unit (CPU) on which at least a portion of the first execution of an application occurs; and determine at least one resource in a first subset of resources to block at least a portion of the first execution on the CPU; wherein the determination of one or more blocked resources is based at least in part on the determination of at least one resource in the first subset of resources to block at least a portion of the first execution on the CPU.
[0271] Clause 52. The non-transitory computer-readable medium as described in Clause 37, wherein the stored instructions further cause at least one processor to: select a second subset of resources from a resource set; retransmit the resource set to an application, wherein the second subset of resources is retransmitted to the application after a second delay; monitor a second execution of the application using the resource set; and determine a second timing of an event during the second execution; wherein the determination of one or more blocking resources is further based at least in part on the second timing and the second delay.
[0272] Clause 53. A non-transitory computer-readable medium as described in Clause 52, wherein one or more blocking resources comprise resources in a first subset of resources and a second subset of resources.
[0273] Clause 54. The non-transitory computer-readable medium according to Clause 52, wherein the stored instructions further cause at least one processor to: compare a first timing with a second timing, wherein: when the first timing is longer than the second timing, one or more blocking resources include resources in the first subset of resources; and when the second timing is longer than the first timing, one or more blocking resources include resources in the second subset of resources.
[0274] Clause 55. An apparatus comprising: a resource acquisition circuit configured to load a first resource set for consumption by a first application; a resource supply circuit configured to provide the first resource set to the first application; a resource monitoring circuit configured to monitor a first execution of the first application utilizing the first resource set; and a timing circuit configured to determine a first timing event during the first execution; wherein: the resource acquisition circuit is further configured to load a second resource set and a third resource set for consumption by the first application, wherein the second resource set is a subset of the first resource set, and the third resource set is a different subset of the first resource set; and the resource supply circuit is further configured to provide the second resource set to the first application at a first time. The resource monitoring circuit is further configured to monitor a second execution of the first application using the second resource set; the resource supply circuit is further configured to provide a third resource set to the first application at a second time; the resource monitoring circuit is further configured to monitor a third execution of the first application using the third resource set; the timing circuit is further configured to determine a second timing of the event during the second and third executions; wherein the apparatus further includes: a resource analysis circuit configured to determine, based on the second timing, that the third resource set includes the resources required for the event; and an analysis supply circuit configured to transmit a message including an indication that the third resource set is identified as including the resources required for the event.
[0275] Clause 56. The apparatus described in Clause 55, wherein the application is a web browser.
[0276] Clause 57. The apparatus as described in Clause 55, wherein the event is maximum content drawing.
[0277] Clause 58. The apparatus as described in Clause 55, wherein the event is a full-content drawing.
[0278] Clause 59. The apparatus according to Clause 55, wherein the event is a drawing event.
[0279] Clause 60. The apparatus as described in Clause 55, wherein the event is the first drawing of the content object.
[0280] Clause 61. The apparatus described in Clause 55, wherein the event is visually completed.
[0281] Clause 62. The apparatus as described in Clause 55, wherein the event is updating the layout tree.
[0282] Clause 63. The apparatus described in Clause 55, wherein the event is a snappi event.
[0283] Clause 64. A method comprising: loading a first resource set for consumption by a first application; providing the first resource set to the first application; monitoring a first execution of the first application utilizing the first resource set; determining a first timing of an event during the first execution; loading a second resource set and a third resource set for consumption by the first application, wherein the second resource set is a subset of the first resource set and the third resource set is a different subset of the first resource set; providing the second resource set to the first application at a first timing; monitoring a second execution of the first application utilizing the second resource set; providing the third resource set to the first application at a second timing; monitoring a third execution of the first application utilizing the third resource set; determining a second timing of an event during the second and third executions; and determining, based on the second timing, that the third resource set includes the resources required for the event.
[0284] Clause 65. The method described in Clause 64, wherein the application is a web browser.
[0285] Clause 66. The method described in Clause 64, wherein the event is the maximum content drawing.
[0286] Clause 67. The method described in Clause 64, wherein the event is a full-content drawing.
[0287] Clause 68. The method described in Clause 64, wherein the event is a drawing event.
[0288] Clause 69. The method described in Clause 64, wherein the event is the first drawing of the content object.
[0289] Clause 70. The method described in Clause 64, wherein the event is visually completed.
[0290] Clause 71. The method described in Clause 64, wherein the event is an update of the layout tree.
[0291] Clause 72. The method described in Clause 64, wherein the event is a snappi event.
[0292] Clause 73. An apparatus comprising: a resource acquisition circuit configured to load a first resource set; a selection circuit configured to select a second resource set and a third resource set from the first resource set, wherein the second resource set is a subset of the first resource set and the third resource set is a distinct subset of the first resource set; a resource supply circuit configured to provide the second resource set to a first application at a first time; a resource monitoring circuit configured to monitor a first execution of the first application utilizing the second resource set; wherein the resource supply circuit is further configured to provide the third resource set to the first application at a second time; wherein the resource monitoring circuit is further configured to monitor a second execution of the first application utilizing the third resource set; wherein the apparatus further comprises: a timing circuit configured to determine the timing of an event during the first execution and the second execution; and a resource analysis circuit configured to determine, based on the first time, the second time, and the timing, the resources required for the third resource set to include the event.
[0293] Clause 74. The apparatus described in Clause 73, wherein the application is a web browser.
[0294] Clause 75. The apparatus as described in Clause 73, wherein the event is maximum content drawing.
[0295] Clause 76. The apparatus as described in Clause 73, wherein the event is a full-content drawing.
[0296] Clause 77. The apparatus according to Clause 73, wherein the event is a drawing event.
[0297] Clause 78. The apparatus as described in Clause 73, wherein the event is the first drawing of the content object.
[0298] Clause 79. The apparatus according to Clause 73, wherein the event is visually completed.
[0299] Clause 80. The apparatus as described in Clause 73, wherein the event is updating the layout tree.
[0300] Clause 81. The apparatus described in Clause 73, wherein the event is a snappi event.
[0301] Clause 82. A method comprising: loading a first resource set; selecting a second resource set and a third resource set from the first resource set, wherein the second resource set is a subset of the first resource set and the third resource set is a distinct subset of the first resource set; providing the second resource set to a first application at a first time; monitoring a first execution of the first application utilizing the second resource set; providing the third resource set to the first application at a second time; monitoring a second execution of the first application utilizing the third resource set; determining the timing of an event during the first and second executions; and determining, based on the first time, the second time, and the timing, the resources required by the third resource set to include the event.
[0302] Clause 83. The method described in Clause 82, wherein the application is a web browser.
[0303] Clause 84. The method described in Clause 82, wherein the event is the maximum content drawing.
[0304] Clause 85. The method described in Clause 82, wherein the event is a full-content drawing.
[0305] Clause 86. The method described in Clause 82, wherein the event is a drawing event.
[0306] Clause 87. The method described in Clause 82, wherein the event is the first drawing of the content object.
[0307] Clause 88. The method described in Clause 82, wherein the event is visually completed.
[0308] Clause 89. The method described in Clause 82, wherein the event is an update of the layout tree.
[0309] Clause 90. The method described in Clause 82, wherein the event is a snappi event.
[0310] Clause 91. An apparatus comprising: a resource acquisition circuit configured to parse a resource set; a resource identifier circuit configured to select a first subset of resources from the resource set; a resource supply circuit configured to transmit the resource set to an application, wherein the first subset of resources is transmitted after a first delay; a resource monitoring circuit configured to monitor a first execution of a first application; and to monitor one or more drawing events of one or more regions of a page; a resource analysis circuit configured to: determine a timeline of one or more drawing events; and determine, based on the timeline and the first delay, that the first subset of resources includes one or more blocking resources for the events; and an analysis supply circuit configured to transmit a message including an indicator identifying one or more blocking resources.
[0311] Clause 92. The apparatus described in Clause 91, wherein the application is a web browser.
[0312] Clause 93. The apparatus according to Clause 92 further includes: a memory device; and a collection circuit; wherein: a resource set is used for web pages; the collection circuit is configured to collect the resource set for web pages and store the resource set and web pages in the memory device; and the resource acquisition circuit is further configured to retrieve the resource set from the memory device.
[0313] Clause 94. A method comprising: resolving a resource set via a resource acquisition circuit; selecting a first resource subset from the resource set via a resource identifier circuit; transmitting the resource set to an application via a resource supply circuit, wherein the first resource subset is transmitted after a first delay; monitoring a first execution of the application via a resource monitoring circuit; monitoring one or more drawing events of one or more regions of a page via the resource monitoring circuit; determining a timeline of one or more drawing events via a resource analysis circuit; determining, via the resource analysis circuit and based on the timeline and the first delay, that the first resource subset includes one or more blocking resources for the events; and transmitting a message via the analysis supply circuit, the message including an indicator identifying the one or more blocking resources.
[0314] Clause 95. The method described in Clause 94, wherein the application is a web browser.
[0315] Clause 96. The method according to Clause 95, wherein: the resource set is for web pages; and the method further includes: collecting the resource set via a collection circuit; storing the resource set and web pages in a memory device via the collection circuit; and retrieving the resource set from the memory device via a resource acquisition circuit.
[0316] Clause 97. An apparatus comprising: a prompt acquisition circuit configured to parse prompt data defining a plurality of prompts configured to facilitate the loading of a webpage; a combination circuit configured to generate a plurality of prompt combinations from the plurality of prompts; an automatic tuning circuit configured to: for each of the plurality of prompt combinations, use the prompt combination to load the webpage; for each loading of the webpage, determine timing of an event associated with the loading of the webpage; and generate performance data of the plurality of prompt combinations based at least in part on the timing; and a performance supply circuit configured to transmit the performance data.
[0317] Clause 98. The apparatus of Clause 97, wherein the plurality of prompts include information for locating one or more resources for loading the webpage.
[0318] Clause 99. The apparatus as described in Clause 98, wherein multiple prompts include one or more sub-generic resource locators (URLs).
[0319] Clause 100. The apparatus described in Clause 99, wherein one or more resources are elements rendered on a web page.
[0320] Clause 101. The apparatus according to Clause 100, wherein the element is graphic.
[0321] Clause 102. The apparatus according to Clause 97, wherein the plurality of prompts includes at least one of the following: a pre-connection prompt; a pre-load prompt; or a priority prompt.
[0322] Clause 103. The apparatus as described in Clause 97, wherein the plurality of prompts includes at least one early prompt.
[0323] Clause 104. The apparatus as described in Clause 97, wherein the plurality of prompts includes at least one subsequent prompt.
[0324] Clause 105. The apparatus as described in Clause 97, wherein the event is the maximum content drawing.
[0325] Clause 106. The apparatus as described in Clause 97, wherein the event is a full-content drawing.
[0326] Clause 107. The apparatus as described in Clause 97, wherein the event is a drawing event.
[0327] Clause 108. The apparatus as described in Clause 97, wherein the event is the first drawing of the content object.
[0328] Clause 109. The apparatus as described in Clause 97, wherein the event is visually completed.
[0329] Clause 110. The apparatus as described in Clause 97, wherein the event is updating the layout tree.
[0330] Clause 111. The apparatus according to Clause 97, wherein the combination circuitry is further configured to generate multiple combinations of prompts based at least in part on events.
[0331] Clause 112. The apparatus as described in Clause 111, wherein the event is a snappi event.
[0332] Clause 113. The apparatus as described in Clause 97, wherein the performance data includes one or more timings in the timing data.
[0333] Clause 114. The apparatus according to Clause 113, wherein the performance data further includes one or more of a plurality of cue combinations.
[0334] Clause 115. The apparatus according to Clause 114, wherein performance data associates each of one or more timings with one of a plurality of cue combinations.
[0335] Clause 116. The apparatus according to Clause 97, wherein at least one of the prompt combinations comprises an ordered set of at least some of the prompts among a plurality of prompts.
[0336] Clause 117. The apparatus according to Clause 116, wherein the ordered hint set is based at least in part on pre-extraction priority.
[0337] Clause 118. The apparatus according to Clause 116, wherein the ordered set of prompts is based at least in part on network resources.
[0338] Clause 119. The apparatus according to Clause 116, wherein the ordered set of prompts is based at least in part on the expected bandwidth of at least one network connection.
[0339] Clause 120. The apparatus according to Clause 116, wherein the ordered hint set is based at least in part on computational resources.
[0340] Clause 121. The apparatus according to Clause 116, wherein the ordered hint set is based at least in part on available memory.
[0341] Clause 122. The apparatus according to Clause 97 further comprises: a priority circuit configured to generate prompt priority tags for elements of a web page based at least in part on performance data; and a priority tag supply circuit configured to transmit prompt priority tags.
[0342] Clause 123. The apparatus according to Clause 122 further includes: annotation circuitry configured to inject prompt priority tags into a webpage.
[0343] Clause 124. The apparatus according to Clause 123, wherein a priority tag is configured to be injected into a Hypertext Markup Language (HTML) data file of a webpage.
[0344] Clause 125. A method comprising: parsing prompt data via a prompt acquisition circuit, the prompt data defining a plurality of prompts configured to facilitate the loading of a webpage; generating a plurality of prompt combinations from the plurality of prompts via a combination circuit; loading the webpage using the prompt combination for each of the plurality of prompt combinations via an auto-tuning circuit; determining, for each loading of the webpage and via the auto-tuning circuit, timing events associated with the loading of the webpage; generating performance data of the plurality of prompt combinations via the auto-tuning circuit and at least in part based on the timing; and transmitting the performance data via a performance supply circuit.
[0345] Clause 126. The method described in Clause 125, wherein multiple prompts include information for locating one or more resources for loading the webpage.
[0346] Clause 127. The method described in Clause 126, wherein multiple prompts include one or more sub-generic resource locators (URLs).
[0347] Clause 128. The method described in Clause 127, wherein one or more resources are elements rendered on a webpage.
[0348] Clause 129. The method described in Clause 125, wherein the plurality of prompts includes at least one of the following: a pre-connection prompt; a pre-load prompt; or a priority prompt.
[0349] Clause 130. The method described in Clause 125, wherein the plurality of prompts includes at least one early prompt.
[0350] Clause 131. The method described in Clause 125, wherein the plurality of prompts includes at least one later prompt.
[0351] Clause 132. The method described in accordance with Clause 128, wherein the elements include graphics.
[0352] Clause 133. The method described in Clause 125, wherein the event is the maximum content drawing.
[0353] Clause 134. The method described in Clause 125, wherein the event is full content drawing.
[0354] Clause 135. The method described in Clause 125, wherein the event is a drawing event.
[0355] Clause 136. The method described in Clause 125, wherein the event is the first drawing of the content object.
[0356] Clause 137. The method described in Clause 125, wherein the event is visually completed.
[0357] Clause 138. The method described in Clause 125, wherein the event is an update of the layout tree.
[0358] Clause 139. The method of Clause 125, wherein the generation of multiple prompt combinations is based at least in part on events.
[0359] Clause 140. The method described in Clause 139, wherein the event is a snappi event.
[0360] Clause 141. The method described in Clause 125, wherein the performance data includes one or more timings in the timing.
[0361] Clause 142. The method according to Clause 141, wherein the performance data further includes one or more of a plurality of prompt combinations.
[0362] Clause 143. The method according to Clause 142, wherein performance data associates each of one or more timings with one of a plurality of cue combinations.
[0363] Clause 144. The method according to Clause 125, wherein at least one of the prompt combinations comprises an ordered set of at least some of the prompts.
[0364] Clause 145. The method according to Clause 144, wherein the ordered hint set is based at least in part on pre-extraction priority.
[0365] Clause 146. The method according to Clause 144, wherein the ordered suggestion set is based at least in part on network resources.
[0366] Clause 147. The method according to Clause 144, wherein the ordered hint set is based at least in part on the expected bandwidth of at least one network connection.
[0367] Clause 148. The method according to Clause 144, wherein the ordered hint set is based at least in part on computational resources.
[0368] Clause 149. The method according to Clause 144, wherein the ordered hint set is based at least in part on available memory.
[0369] Clause 150. The method according to Clause 125 further comprises: generating prompt priority tags for elements of a web page via a priority circuit based at least in part on performance data; and transmitting the prompt priority tags via a priority tag supply circuit.
[0370] Clause 151. The method according to Clause 150 further includes: an annotation circuit configured to inject priority tags into the web page.
[0371] Clause 152. The method described in Clause 151 further includes: injecting priority tags into the Hypertext Markup Language (HTML) data file of the webpage.
[0372] Clause 153. A non-transitory computer-readable medium storing instructions that, when loaded into at least one processor, cause at least one processor to: parse prompt data defining a plurality of prompts constructed to facilitate the loading of a webpage; generate a plurality of prompt combinations from the plurality of prompts; for each of the plurality of prompt combinations, use the prompt combination to load the webpage; for each loading of the webpage, determine the timing of an event associated with the loading of the webpage; generate performance data of the plurality of prompt combinations based at least in part on the timing; and transmit the performance data.
[0373] Clause 154. A non-transitory computer-readable medium as described in Clause 153, wherein multiple prompts include information for locating one or more resources for loading a webpage.
[0374] Clause 155. Non-transitory computer-readable medium as described in Clause 154, wherein multiple prompts include one or more sub-generic resource locators (URLs).
[0375] Clause 156. A non-transitory computer-readable medium as described in Clause 155, wherein one or more resources are elements rendered on a web page.
[0376] Clause 157. A non-transitory computer-readable medium as described in Clause 156, wherein the elements are graphics.
[0377] Clause 158. A non-transitory computer-readable medium as described in Clause 154, wherein the event is the maximum content drawing.
[0378] Clause 159. A non-transitory computer-readable medium as described in Clause 154, wherein the event is a full-content drawing.
[0379] Clause 160. A non-transitory computer-readable medium as described in Clause 154, wherein the event is the first drawing of a content object.
[0380] Clause 161. A non-transitory computer-readable medium as described in Clause 154, wherein the event is visually completed.
[0381] Clause 162. A non-transitory computer-readable medium as described in Clause 154, wherein the event is an update of the layout tree.
[0382] Clause 163. A non-transitory computer-readable medium as described in Clause 154, wherein the stored instructions further cause at least one processor to generate a plurality of prompt combinations based at least in part on events.
[0383] Clause 164. A non-transitory computer-readable medium as described in Clause 163, wherein the event is a snappi event.
[0384] Clause 165. A non-transitory computer-readable medium as described in Clause 154, wherein performance data includes one or more timings in a timing sequence.
[0385] Clause 166. The non-transitory computer-readable medium as described in Clause 165, wherein the performance data further includes one or more of a plurality of prompt combinations.
[0386] Clause 167. The non-transitory computer-readable medium as described in Clause 166, wherein performance data associates each of one or more timings with one of a plurality of cue combinations.
[0387] Clause 168. The non-transitory computer-readable medium as described in Clause 154, wherein at least one of the prompt combinations comprises an ordered set of at least some of the prompts.
[0388] Clause 169. A non-transitory computer-readable medium as described in Clause 168, wherein the ordered hint set is based at least in part on pre-extraction priority.
[0389] Clause 170. A non-transitory computer-readable medium as described in Clause 168, wherein the ordered hint set is based at least in part on a network resource.
[0390] Clause 171. A non-transitory computer-readable medium as described in Clause 168, wherein the ordered set of prompts is based at least in part on the expected bandwidth of at least one network connection.
[0391] Clause 172. The non-transitory computer-readable medium as described in Clause 168, wherein the ordered hint set is based at least in part on computing resources.
[0392] Clause 173. The non-transitory computer-readable medium as described in Clause 168, wherein the ordered hint set is based at least in part on available memory.
[0393] Clause 174. The non-transitory computer-readable medium as described in Clause 154, wherein the stored instructions further cause at least one processor to: generate hint priority tags for elements of a web page based at least in part on performance data; and transmit the hint priority tags.
[0394] Clause 175. A non-transitory computer-readable medium as described in Clause 174, wherein instructions stored therein further cause at least one processor to inject a priority tag into a webpage.
[0395] Clause 176. The non-transitory computer-readable medium as described in Clause 175, wherein the stored instructions further cause at least one processor to inject priority tags into the Hypertext Markup Language (HTML) data file of the web page.
[0396] Clause 177. An apparatus comprising: a prompt acquisition circuit configured to parse prompt data defining a plurality of prompts configured to facilitate the loading of a webpage; a combination circuit configured to generate a plurality of prompt combinations from the plurality of prompts; an automatic tuning circuit configured to: for each of the plurality of prompt combinations, use the prompt combination to load the webpage; for each loading of the webpage, determine timing of an event associated with the loading of the webpage; and select a prompt combination from the plurality of prompt combinations based at least in part on the timing; and a recommendation supply circuit configured to transmit the selected prompt combination.
[0397] Clause 178. The apparatus of Clause 177, wherein the automatic tuning circuitry is further configured to generate multiple cues combinations based at least in part on anticipated network resources associated with the multiple cues.
[0398] Clause 179. The apparatus according to Clause 178, wherein the network resources are intended to be based at least in part on at least one of the following: bandwidth, latency, or cost.
[0399] Clause 180. The apparatus of Clause 177, wherein the automatic tuning circuitry is further configured to generate a plurality of cues combinations based at least in part on expected computational resources associated with the plurality of cues.
[0400] Clause 181. The apparatus according to Clause 180, wherein the intended computing resources are based at least in part on at least one of: cache; or processing power.
[0401] Clause 182. A method comprising: parsing prompt data via a prompt acquisition circuit, the prompt data defining a plurality of prompts configured to facilitate the loading of a webpage; generating a plurality of prompt combinations from the plurality of prompts via a combination circuit; loading a webpage using the prompt combinations for each of the plurality of prompt combinations and via an auto-tuning circuit; determining, for each loading of the webpage and via the auto-tuning circuit, timing of an event associated with the loading of the webpage; selecting a prompt combination from the plurality of prompt combinations via the auto-tuning circuit based at least in part on the timing; and transmitting the selected prompt combination via a recommendation supply circuit.
[0402] Clause 183. The method described in Clause 182 generates a combination of multiple prompts based at least in part on the expected network resources associated with the multiple prompts.
[0403] Clause 184. The method described in accordance with Clause 183, wherein the network resources are expected to be based at least in part on at least one of the following: bandwidth, latency, or cost.
[0404] Clause 185. The method according to Clause 182, wherein the generation of a plurality of prompt combinations is based at least in part on the expected computational resources associated with the plurality of prompts.
[0405] Clause 186. The method according to Clause 185, wherein the expected computing resources are based at least in part on at least one of: cache; or processing power.
[0406] Clause 187. A non-transitory computer-readable medium storing instructions that, when loaded into at least one processor, cause at least one processor to: parse prompt data defining a plurality of prompts constructed to facilitate the loading of a webpage; generate a plurality of prompt combinations from the plurality of prompts; for each of the plurality of prompt combinations, use the prompt combination to load the webpage; for each loading of the webpage, determine the timing of an event associated with the loading of the webpage; select a prompt combination from the plurality of prompt combinations based at least in part on the timing; and transmit the selected prompt combination.
[0407] Clause 188. A non-transitory computer-readable medium as described in Clause 187, wherein the stored instructions further cause at least one processor to generate a plurality of cues combinations based at least in part on anticipated network resources associated with the plurality of cues.
[0408] Clause 189. A non-transitory computer-readable medium as described in Clause 188, wherein the network resources are intended to be based at least in part on at least one of the following: bandwidth, latency, or cost.
[0409] Clause 190. A non-transitory computer-readable medium as described in Clause 187, wherein the stored instructions are further configured to generate a plurality of prompt combinations based at least in part on anticipated computational resources associated with the plurality of prompts.
[0410] Clause 191. A non-transitory computer-readable medium as described in Clause 190, wherein the intended computing resources are based at least in part on at least one of: a cache; or processing power.
[0411] Clause 192. An apparatus comprising: a resource acquisition circuit configured to parse a set of resources for a web page; a resource identifier circuit configured to select a first subset of resources from the resource set; a resource supply circuit configured to transmit the resource set to a web browser, wherein the first subset of resources is transmitted to the web browser after a first delay; a resource monitoring circuit configured to: monitor a first execution of the web browser using the resource set to load the web page and determine a first timing of an event during the first execution; a resource analysis circuit configured to determine one or more blocking resources in the resource set for the event, based at least in part on the first timing and the first delay; and a prompt acquisition circuit configured to decode... The system comprises: a set of prompt data defined to facilitate the pre-fetching of one or more blocking resources as part of webpage loading; a combination circuit configured to generate multiple prompt combinations from the multiple prompts; an automatic tuning circuit configured to: load a webpage using a web browser and the prompt combination for each of the multiple prompt combinations; determine the timing of events associated with the loading of the webpage for each webpage loading; generate performance data of the multiple prompt combinations based at least in part on the timing; and select a prompt combination from the multiple prompt combinations based at least in part on the timing; and a recommendation delivery circuit configured to transmit the selected prompt combination.
[0412] Clause 193. The apparatus according to Clause 192 further includes: a web browser, wherein the web browser is configured to: parse the selected combination of prompts; and use the selected combination of prompts to load a web page.
[0413] Clause 194. The apparatus according to Clause 192 further includes: a memory device; and collection circuitry configured to: collect a set of resources; and store the set of resources in the memory device; and resource acquisition circuitry further configured to retrieve the set of resources from the memory device.
[0414] Clause 195. The apparatus as described in Clause 192, wherein the event is maximum content drawing.
[0415] Clause 196. The apparatus as described in Clause 192, wherein the event is a full-content drawing.
[0416] Clause 197. The apparatus according to Clause 192, wherein the event is a drawing event.
[0417] Clause 198. The apparatus as described in Clause 192, wherein the event is the first drawing of the content object.
[0418] Clause 199. The apparatus described in Clause 192, wherein the event is visually completed.
[0419] Clause 200. The apparatus as described in Clause 192, wherein the event is updating the layout tree.
[0420] Clause 201. The apparatus described in Clause 192, wherein the event is a snappi event.
[0421] Clause 202. The apparatus according to Clause 201 further includes: agility circuitry configured to identify a snappi event by analyzing a second execution of a web browser that uses a resource set to load the web page.
[0422] Clause 203. A method comprising: resolving a set of resources for a web page via a resource acquisition circuit; selecting a first subset of resources from the resource set via a resource identifier circuit; transmitting the resource set to a web browser via a resource supply circuit, wherein the first subset of resources is transmitted to the web browser after a first delay; monitoring a first execution of the web browser using the resource set to load the web page via a resource monitoring circuit; determining a first timing of an event during the first execution via the resource monitoring circuit; determining one or more blocking resources in the resource set for the event via a resource analysis circuit and based at least in part on the first timing and the first delay; and resolving prompt data via a prompt acquisition circuit, the prompt data defining... Multiple prompts configured to facilitate the pre-fetching of one or more blocking resources as part of loading a webpage; multiple prompt combinations generated from the multiple prompts via a combination circuit; for each of the multiple prompt combinations, loading a webpage using a web browser and the prompt combination via an auto-tuning circuit; for each loading of the webpage, determining the timing of events associated with the loading of the webpage via the auto-tuning circuit; generating performance data for the multiple prompt combinations via the auto-tuning circuit and based at least in part on the timing; selecting a prompt combination from the multiple prompt combinations via the auto-tuning circuit based at least in part on the timing; and transmitting the selected prompt combination via a recommendation supply circuit.
[0423] Clause 204. The method described in Clause 203 further includes: parsing the selected combination of prompts via a web browser; and loading a web page using the selected combination of prompts via a web browser.
[0424] Clause 205. The method according to Clause 203 further includes: collecting a resource set via a collection circuit; storing the resource set in a memory device via the collection circuit; and retrieving the resource set from the memory device via a resource acquisition circuit.
[0425] Clause 206. The method described in accordance with Clause 203, wherein the event is the maximum content drawing.
[0426] Clause 207. The method described in accordance with Clause 203, wherein the event is a full-content drawing.
[0427] Clause 208. The method described in accordance with Clause 203, wherein the event is a drawing event.
[0428] Clause 209. The method described in Clause 203, wherein the event is the first drawing of the content object.
[0429] Clause 210. The method described in accordance with Clause 203, wherein the event is visual completion.
[0430] Clause 211. The method described in accordance with Clause 203, wherein the event is an update of the layout tree.
[0431] Clause 212. The method described in accordance with Clause 203, wherein the event is a snappi event.
[0432] Clause 213. The method according to Clause 212 further includes: analyzing a second execution of a web browser using a resource set to load a web page via an agile circuit; and identifying a snappi event via an agile circuit in response to the analysis of the second execution of the web browser.
[0433] Clause 214. A non-transitory computer-readable medium storing instructions that, when loaded into at least one processor, cause at least one processor to: parse a set of resources for a web page; select a first subset of resources from the set of resources; transmit the set of resources to a web browser, wherein the first subset of resources is transmitted to the web browser after a first delay; monitor a first execution of the web browser using the set of resources to load the web page; determine a first timing of an event during the first execution; determine one or more blocking resources in the set of resources for the event, based at least in part on the first timing and the first delay; parse cue data, the cue data defining a plurality of cue data configured to facilitate the pre-fetching of the one or more blocking resources as part of loading the web page; generate a plurality of cue combinations from the plurality of cue data; for each of the plurality of cue combinations, load the web page using the web browser and the cue combination; for each loading of the web page, determine a timing of an event associated with the loading of the web page; generate performance data of the plurality of cue combinations based at least in part on the timing; select a cue combination from the plurality of cue combinations based at least in part on the timing; and transmit the selected cue combination.
[0434] Clause 215. A non-transitory computer-readable medium as described in Clause 214, wherein the stored instructions further adapt at least one processor to: collect a set of resources; store the set of resources in a memory device; and retrieve the set of resources from the memory device.
[0435] Clause 216. A non-transitory computer-readable medium as described in Clause 214, wherein the event is the maximum content drawing.
[0436] Clause 217. A non-transitory computer-readable medium as described in Clause 214, wherein the event is drawn in its entirety.
[0437] Clause 218. A non-transitory computer-readable medium as described in Clause 214, wherein the event is the first drawing of a content object.
[0438] Clause 219. A non-transitory computer-readable medium as described in Clause 214, wherein the event is visually completed.
[0439] Clause 220. A non-transitory computer-readable medium as described in Clause 214, wherein the event is an update of the layout tree.
[0440] Clause 221. A non-transitory computer-readable medium as described in Clause 214, wherein the event is a snappi event.
[0441] Clause 222. The non-transitory computer-readable medium as described in Clause 221, wherein the stored instructions further adapt at least one processor to: identify a snappi event by analyzing a second execution of a web browser that uses a resource set to load the web page.
[0442] Clause 223. A system comprising: a snappi event identifier circuit configured to parse a set of resources for a webpage and identify one or more blocking resources; a prompting implementation circuit configured to: parse data defining a plurality of prompts configured to facilitate the pre-fetching of one or more blocking resources as part of loading a webpage; and generate a recommended prompt set of one or more of the plurality of prompts; and a recommendation supply circuit configured to transmit the recommended prompt set.
[0443] Clause 224. The system according to Clause 223, wherein the snappi event identifier circuit is further configured to: perform multiple loads of a webpage; and determine a snappi event based at least in part on the multiple loads of the webpage; wherein one or more blocking resources are associated with the snappi event.
[0444] Clause 225. The system described in Clause 224, wherein the snappi event corresponds to the display of the main content portion of the webpage.
[0445] Clause 226. The system according to Clause 224, wherein the prompt implementation circuitry is further configured to: generate a plurality of distinct combinations of prompts; for each of the distinct combinations, use the distinct combination to load a webpage; and determine the fastest distinct combination that has the shortest time to complete a snappi event; wherein the recommended prompt set is based at least in part on the fastest distinct combination.
[0446] Clause 227. The system according to Clause 226, wherein the prompting implementation circuitry is further configured to generate distinct combinations of prompts based at least in part on network resources associated with the resource set.
[0447] Clause 228. The system according to Clause 226, wherein the prompting implementation circuitry is further configured to generate distinct combinations of prompts based at least in part on computational resources associated with the resource set.
[0448] Clause 229. The system described in Clause 223 further includes: a web browser configured to load web pages using a set of recommended suggestions.
[0449] Clause 230. A method comprising: resolving a set of resources for a web page via a snappi event identifier circuit; determining one or more blocking resources via the snappi event identifier circuit; resolving data via a prompting implementation circuit, the data defining a plurality of prompts configured to facilitate the pre-fetching of one or more blocking resources as part of loading a web page; generating a recommended prompt set of one or more prompts of the plurality of prompts via the prompting implementation circuit; and transmitting the recommended prompt set via a prompting supply circuit.
[0450] Clause 231. The method according to Clause 230 further comprises: performing multiple loads of a webpage via a snappi event identifier circuit; and determining a snappi event via the snappi event identifier circuit and at least in part based on the multiple loads of the webpage; wherein one or more blocking resources are associated with the snappi event.
[0451] Clause 232. The method described in Clause 231, wherein the snappi event corresponds to the display of the main content portion of the webpage.
[0452] Clause 233. The method according to Clause 231 further comprises: generating a plurality of distinct combinations of prompts via prompt implementation circuitry; for each of the distinct combinations, loading a webpage using the distinct combination via prompt implementation circuitry; and determining, via prompt implementation circuitry, the fastest distinct combination that has the shortest time to complete a snappi event; wherein the recommended prompt set is based at least in part on the fastest distinct combination.
[0453] Clause 234. The method according to Clause 233, wherein generating distinct combinations of prompts via prompt implementation circuitry is based at least in part on network resources associated with the resource set.
[0454] Clause 235. The method according to Clause 233, wherein generating distinct combinations of prompts via prompt implementation circuitry is based at least in part on computational resources associated with the resource set.
[0455] Clause 236. The method described in Clause 230 further includes: using a set of recommended tips to load the web browser.
[0456] Clause 237. A non-transitory computer-readable medium storing instructions that, when loaded into at least one processor, cause at least one processor to: parse a set of resources for a web page and determine one or more blocking resources; parse data defining a plurality of prompts constructed to facilitate the pre-fetching of one or more blocking resources as part of loading a web page; generate a recommended prompt set of one or more of the plurality of prompts; and transmit the recommended prompt set.
[0457] Clause 238. A non-transitory computer-readable medium as described in Clause 237, wherein the stored instructions further cause at least one processor to: perform multiple loadings of a web page; and determine a snappi event based at least in part on the multiple loadings of the web page; wherein one or more blocking resources are associated with the snappi event.
[0458] Clause 239. A non-transitory computer-readable medium as described in Clause 238, wherein a snappi event corresponds to the display of the main content portion of a webpage.
[0459] Clause 240. The non-transitory computer-readable medium as described in Clause 238, wherein the stored instructions further cause at least one processor to: generate a plurality of distinct combinations of prompts; for each of the distinct combinations, use the distinct combination to load a web page; and determine the fastest distinct combination that has the shortest time to complete a snappi event; wherein the recommended prompt set is based at least in part on the fastest distinct combination.
[0460] Clause 241. The non-transitory computer-readable medium as described in Clause 240, wherein the distinct combination of prompts is generated at least in part based on network resources associated with the resource set.
[0461] Clause 242. The non-transitory computer-readable medium as described in Clause 240, wherein the distinct combinations of prompts are generated at least in part based on computing resources associated with the resource set.
[0462] Clause 243. A non-transitory computer-readable medium as described in Clause 237, wherein the stored instructions further cause at least one processor to: collect a resource set; store the resource set in a memory device; and retrieve the resource set from the memory device.
[0463] Clause 244. A method comprising: browsing a web page using a web browser; observing a first timing of a page event of the web page; recording a superset of resources fetched as part of rendering of the web page prior to the page event; browsing the web page a second time using the web browser, the web browser introducing a delay before fetching a resource in the superset of resources, wherein the amount of the delay is greater than the timing of the page event; observing a second timing of the page event after the delay; and determining, in part based on the second timing and the amount of the delay, that a resource in the superset of resources is blocking for the page event.
[0464] Clause 245. The method described in accordance with Clause 244, wherein the first timing indicates the human perception of the page speed of the webpage.
[0465] Clause 246. The method described in accordance with Clause 244, wherein the delay is at least twice the timing of the page event.
[0466] Clause 247. The method described in accordance with Clause 244, wherein the page event is the maximum content drawing.
[0467] Clause 248. The method described in Clause 244, wherein the page event is a full content rendering.
[0468] Clause 249. The method described in Clause 244, wherein the page event is a draw event.
[0469] Clause 250. The method described in Clause 244, wherein the page event is the first content object to be drawn.
[0470] Clause 251. The method described in accordance with Clause 244, wherein the page event is visual completion.
[0471] Clause 252. The method described in accordance with Clause 244, wherein the page event is an update of the layout tree.
[0472] Clause 253. The method described in accordance with Clause 244, wherein the page event is a snappi event.
[0473] Clause 254. The method described in Clause 244, wherein one of the resources in the resource hyper-set is required for the completion of a page event.
[0474] Clause 255. The method according to Clause 244 further comprises: monitoring at least a portion of the CPU on which the web browser is executing; wherein determining, in part based on a second timing and delay, that a resource in the resource superset is blocking for page events comprises: determining that a resource in the resource superset is blocking the execution of the web browser on the CPU.
[0475] The methods and systems described herein can be deployed, in part or in whole, via a machine having a computer, computing device, processor, circuitry, and / or server that executes computer-readable instructions, program code, directives, and / or includes hardware configured to functionally perform one or more operations of the methods and systems disclosed herein. The terms computer, computing device, processor, circuitry, and / or server as used herein should be understood broadly. In embodiments, circuitry can be implemented in hardware, software, and / or a combination thereof. For example, circuitry can include software executing on a general-purpose digital processing system, a general-purpose computer, an electronic circuitry system, and / or any combination thereof. In embodiments, circuitry can include a single computing machine and / or be distributed across multiple computing machines.
[0476] The terms computer, computing device, processor, circuit, and / or server, any one or more of which include any type of computer capable of accessing instructions stored in communications on a non-transitory computer-readable medium, thereby enabling the computer to perform the operations of the systems or methods described herein when executing the instructions. In some embodiments, such instructions themselves include the computer, computing device, processor, circuit, and / or server. Alternatively or additionally, the computer, computing device, processor, circuit, and / or server may be a separate hardware device, one or more computing resources distributed across hardware devices, and / or may include aspects such as logic circuitry, embedded circuitry, sensors, actuators, input and / or output devices, network and / or communication resources, any type of memory resources, any type of processing resources, and / or hardware devices configured to functionally perform one or more operations of the systems and methods described herein in response to determined conditions.
[0477] Network and / or communication resources include, but are not limited to, local area networks (LANs), wide area networks (WANs), wireless, the Internet, or any other known communication resources and protocols. Example and non-limiting hardware, computers, computing devices, processors, circuits, and / or servers include, but are not limited to, general-purpose computers, servers, embedded computers, mobile devices, virtual machines, and / or simulated versions of one or more of these. Example and non-limiting hardware, computers, computing devices, processors, circuits, and / or servers can be physical, logical, or virtual. Computers, computing devices, processors, circuits, and / or servers can be: distributed resources included as aspects of several devices; and / or included as an interoperable set of resources to perform the described functions of the computer, computing device, processor, circuit, and / or server, such that the distributed resources work together to operate the computer, computing device, processor, circuit, and / or server. In some embodiments, each computer, computing device, processor, circuit, and / or server may be on separate hardware, and / or one or more hardware devices may include aspects of more than one computer, computing device, processor, circuit, and / or server, for example as separately executable instructions stored on the hardware device and / or as aspects of a logical partition of an executable instruction set, wherein some aspects of the hardware device include part of a first computer, computing device, processor, circuit, and / or server, and some aspects of the hardware device include part of a second computer, computing device, processor, circuit, and / or server.
[0478] Computers, computing devices, processors, circuits, and / or servers can be part of servers, clients, network infrastructure, mobile computing platforms, fixed computing platforms, or other computing platforms. A processor can be any kind of computing or processing device capable of executing program instructions, code, binary instructions, etc. A processor can be or include signal processors, digital processors, embedded processors, microprocessors, or any variant that directly or indirectly facilitates the execution of program code or program instructions stored thereon, such as coprocessors (mathematical coprocessors, graphics coprocessors, communication coprocessors, etc.). Furthermore, a processor can enable the execution of multiple programs, threads, and code. Threads can be executed concurrently to enhance processor performance and facilitate simultaneous operation of applications. As a specific implementation, the methods, program code, program instructions, etc., described herein can be implemented in one or more threads. Threads may spawn other threads, which may have been assigned priorities associated with them; the processor can execute these threads based on priorities or any other order of instructions provided in the program code. A processor may include memory storing the methods, code, instructions, and programs as described herein and elsewhere. A processor can access storage media through an interface that stores the methods, code, and instructions as described herein and elsewhere. Storage media associated with a processor for storing methods, programs, code, program instructions, or other types of instructions executable by a computing or processing device may include, but are not limited to, one or more of CD-ROM, DVD, memory, hard disk, flash drive, RAM, ROM, cache, etc.
[0479] The processor may include one or more cores that can enhance the speed and performance of the multiprocessor. In embodiments, the processor may be a dual-core processor, a quad-core processor, or other chip-level multiprocessors that combine two or more independent cores (referred to as dies).
[0480] The methods and systems described herein can be deployed, in part or in whole, via machines that execute computer-readable instructions on servers, clients, firewalls, gateways, hubs, routers, or other such computer and / or networking hardware. The computer-readable instructions may be associated with a server, which may include file servers, print servers, domain servers, internet servers, intranet servers, and other variations such as secondary servers, primary servers, distributed servers, etc. A server may include one or more of the following: memory, processor, computer-readable transient and / or non-transitory media, storage media, ports (physical and virtual), communication devices, and interfaces capable of accessing other servers, clients, machines, and devices via wired or wireless media. The methods, programs, or code described herein and elsewhere may be executed by a server. Additionally, other devices required to perform the methods described in this application may be considered part of the infrastructure associated with the server.
[0481] The server can provide interfaces to other devices, including but not limited to clients, other servers, printers, database servers, print servers, file servers, communication servers, distributed servers, etc. Furthermore, this coupling and / or connection can facilitate remote execution of instructions across a network. Networking of some or all of these devices can facilitate parallel processing of program code, instructions, and / or programs at one or more locations without departing from the scope of this disclosure. Additionally, all devices attached to the server via the interface may include at least one storage medium capable of storing methods, program code, instructions, and / or programs. A central repository can provide program instructions to be executed on different devices. In this embodiment, a remote repository can act as a storage medium for methods, program code, instructions, and / or programs.
[0482] Methods, program code, instructions, and / or programs may be associated with a client, which may include file clients, print clients, domain clients, internet clients, intranet clients, and other variations such as secondary clients, host clients, distributed clients, etc. A client may include one or more of the following: memory, processor, computer-readable transient and / or non-transitory media, storage media, ports (physical and virtual), communication devices, and interfaces capable of accessing other clients, servers, machines, and devices via wired or wireless media. The methods, program code, instructions, and / or programs described herein and elsewhere may be executed by the client. Additionally, other devices used to perform the methods described herein may be considered part of the infrastructure associated with the client.
[0483] The client can provide interfaces to other devices, including but not limited to servers, other clients, printers, database servers, print servers, file servers, communication servers, distributed servers, etc. Furthermore, this coupling and / or connection can facilitate remote execution of methods, program code, instructions, and / or programs across a network. Networking of some or all of these devices can facilitate parallel processing of methods, program code, instructions, and / or programs at one or more locations without departing from the scope of this disclosure. Additionally, all devices attached to the client via the interface may include at least one storage medium capable of storing methods, program code, instructions, and / or programs. A central repository can provide program instructions to be executed on different devices. In this embodiment, a remote repository can act as a storage medium for methods, program code, instructions, and / or programs.
[0484] The methods and systems described herein can be deployed, in part or in whole, through a network infrastructure. The network infrastructure may include elements such as computing devices, servers, routers, hubs, firewalls, clients, personal computers, communication devices, routing devices, and other active and passive devices, modules, and / or components known in the art. Among other components, computing and / or non-computing devices associated with the network infrastructure may include storage media such as flash memory, buffers, stacks, RAM, ROM, etc. The methods, program code, instructions, and / or programs described herein and elsewhere may be executed by one or more network infrastructure elements.
[0485] The methods, program code, instructions, and / or programs described herein and elsewhere can be implemented on a cellular network with multiple cells. The cellular network can be a frequency division multiple access (FDMA) network or a code division multiple access (CDMA) network. The cellular network may include mobile devices, cell sites, base stations, repeaters, antennas, towers, etc.
[0486] The methods, program code, instructions, and / or programs described herein and elsewhere may be implemented on or through mobile devices. Mobile devices may include navigation devices, cellular phones, mobile phones, mobile personal digital assistants, laptops, handheld computers, netbooks, pagers, e-book readers, music players, etc. Among other components, these mobile devices may also include storage media such as flash memory, buffers, RAM, ROM, and one or more computing devices. The computing device associated with the mobile device may be able to execute the methods, program code, instructions, and / or programs stored thereon. Alternatively, the mobile device may be configured to cooperate with other devices to execute instructions. The mobile device may communicate with a base station that interfaces with a server and is configured to execute methods, program code, instructions, and / or programs. The mobile device may communicate on a peer-to-peer network, mesh network, or other communication network. The methods, program code, instructions, and / or programs may be stored on a storage medium associated with a server and executed by a computing device embedded within the server. The base station may include computing devices and storage media. The storage device may store methods, program code, instructions, and / or programs executed by the computing device associated with the base station.
[0487] Methods, program code, instructions, and / or programs can be stored and / or accessed on machine-readable transient and / or non-transient media, which may include: computer components, devices, and recording media that hold digital data for computation over a time interval; semiconductor storage called random access memory (RAM); mass storage typically used for more permanent storage, such as optical discs; magnetic storage forms such as hard disks, magnetic tapes, magnetic drums, magnetic cards, and other types; processor registers, cache memory, volatile memory, and non-volatile memory; optical storage, such as CDs and DVDs; removable media, such as flash memory (e.g., USB sticks or keys), floppy disks, magnetic tapes, paper tapes, punch cards, stand-alone RAM disks, Zip drives, removable mass storage, offline storage, etc.; and other computer storage, such as dynamic memory, static memory, read / write storage, variable storage, read-only, random access, sequential access, location-addressable, file-addressable, content-addressable, network-attached storage, storage area networks, barcodes, magnetic ink, etc.
[0488] Some of the operations described herein include parsing, receiving, and / or determining one or more values, parameters, inputs, data, or other information. Operations including parsing, receiving, and / or determining any value parameters, inputs, data, and / or other information include, but are not limited to: receiving data via user input; receiving data over any type of network; reading data values from a memory location in communication with a receiving device; using default values as received data values; estimating, calculating, or deriving data values based on other information available to the receiving device; and / or updating any of these in response to subsequently received data values. In some embodiments, a data value may be received via a first operation as part of a received data value and subsequently updated via a second operation. For example, the first operation of parsing, receiving, and / or determining data values may be performed when communication fails, is intermittent, or is interrupted, and the update operation of parsing, receiving, and / or determining data values may be performed when communication is restored.
[0489] Certain logical groupings of the operations (e.g., methods or processes of this disclosure) are provided to illustrate aspects of this disclosure. The operations described herein are schematically described and / or depicted, and operations may be combined, divided, reordered, added, or removed in a manner consistent with the disclosure herein. It should be understood that the context in which the operations are described may require an ordering of one or more operations, and / or may explicitly disclose the order of one or more operations; however, the order of operations should be interpreted broadly, whereby any equivalent grouping of operations that provides equivalent operational results is specifically contemplated herein. For example, if a value is used in an operation step, in some contexts it may be necessary to determine the value before that operation step (e.g., where the time delay of the data for an operation to achieve a particular effect is important), but in other contexts it may not be necessary to determine the value before that operation step (e.g., where using a value from a previous execution cycle of the operation is sufficient to achieve these purposes). Therefore, in some embodiments, the described ordering and grouping of operations are explicitly contemplated herein, and in some embodiments, reordering, subdivision, and / or different groupings of operations are explicitly contemplated herein.
[0490] The methods and systems described herein can transform physical and / or intangible items from one state to another. The methods and systems described herein can also transform data representing physical and / or intangible items from one state to another.
[0491] The elements described and depicted herein, including those in flowcharts, block diagrams, and / or operational descriptions, are illustrated and / or described for illustrative purposes, with specific example arrangements of the elements. However, the depicted and / or described elements, their functions, and / or arrangements of these may be implemented on a machine, such as through a computer-executable transient and / or non-transitory medium having a processor capable of executing program instructions stored thereon, and / or as a logic circuit or hardware arrangement. Example arrangements of programming instructions include at least: a monolithic structure of instructions; a separate instruction module for an element or a portion thereof; and / or as an instruction module employing external routines, code, services, etc.; and / or any combination of these, and all such specific implementations are contemplated within the scope of embodiments of this disclosure. Examples of such machines include, but are not limited to, personal digital assistants, laptop computers, personal computers, mobile phones, other handheld computing devices, medical devices, wired or wireless communication devices, transducers, chips, calculators, satellites, tablet PCs, e-books, gadgets, electronic devices, devices with artificial intelligence, computing devices, networking devices, servers, routers, etc. Furthermore, the elements and / or any other logical components described and / or depicted herein may be implemented on a machine capable of executing program instructions. Therefore, while the foregoing flowcharts, block diagrams, and / or operational descriptions illustrate the functional aspects of the disclosed system, any arrangement of program instructions for implementing these functional aspects is contemplated herein. Similarly, it should be understood that the individual steps identified and described above may vary, and the order of the steps may be adapted to a specific application of the technology disclosed herein. Furthermore, any step or operation may be divided and / or combined in any way to provide functionality similar to the described operations. All such variations and modifications are contemplated in this disclosure. The methods and / or processes and their steps described above may be implemented in hardware, program code, instructions, and / or programs, or any combination of hardware and methods, program code, instructions, and / or programs suitable for a particular application. Example hardware includes dedicated computing devices or specific computing devices, specific aspects or components of specific computing devices, and / or arrangements of hardware components and / or logic circuitry for performing one or more operations of the methods and / or systems. The process may be implemented in one or more microprocessors, microcontrollers, embedded microcontrollers, programmable digital signal processors, or other programmable devices, as well as internal and / or external memory. The process may also be embodied, or alternatively, in an application-specific integrated circuit, a programmable gate array, programmable array logic, or any other device or combination of devices that may be configured to process electronic signals. It should also be understood that one or more processes within the process may be implemented as computer-executable code capable of being executed on a machine-readable medium.
[0492] Computer executable code can be created using structured programming languages such as C, object-oriented programming languages such as C++, or any other high- or low-level programming languages (including assembly languages, hardware description languages, and database programming languages and techniques), which can be stored, compiled, or parsed to run on one of the aforementioned devices and processors, heterogeneous combinations of processor architectures, or combinations of different hardware and computer-readable instructions, or any other machine capable of executing program instructions.
[0493] Therefore, in one aspect, each method and combination thereof described above may be embodied in computer-executable code that, when executed on one or more computing devices, performs its steps. In another aspect, the method may be embodied in a system performing its steps and may be distributed across devices in various ways, or all functionality may be integrated into a dedicated, separate device or other hardware. In yet another aspect, means for performing the steps associated with the processes described above may include any of the hardware and / or computer-readable instructions described above. All such permutations and combinations are contemplated in embodiments of this disclosure.
[0494] While this disclosure has been made in conjunction with preferred embodiments shown and described in detail, various modifications and improvements thereto will become apparent to those skilled in the art. Therefore, the spirit and scope of this disclosure are not limited to the foregoing examples, but should be understood in the broadest sense permitted by law.
Claims
1. A method comprising: Load the first resource set; Select a second resource set and a third resource set from the first resource set, wherein the second resource set is a subset of the first resource set and the third resource set is a different subset of the first resource set; Provide the second resource set to the first application as soon as possible; Monitor the first execution of the first application using the second resource set; The third resource set is provided to the first application at a second time. Monitor the second execution of the first application using the third resource set; Determine the timing of the event during the first and second executions; as well as The third resource set is determined to include the resources required for the event based on the first time, the second time, and the timing.
2. The method according to claim 1, wherein the application is a web browser.
3. The method according to claim 1, wherein the event is maximum content rendering.
4. The method according to claim 1, wherein the event is full content rendering.
5. The method according to claim 1, wherein the event is a drawing event.
6. The method of claim 1, wherein the event is the first content object drawing.
7. The method of claim 1, wherein the event is visual completion.
8. The method of claim 1, wherein the event is updating the layout tree.
9. The method of claim 1, wherein the event is a snappi event.
10. An apparatus comprising: The resource acquisition circuit is constructed to resolve the resource set; A resource identifier circuit configured to select a first subset of resources from the resource set; A resource supply circuit is configured to transmit the resource set to an application, wherein the first subset of resources is transmitted after a first delay. The resource monitoring circuit is constructed as follows: Monitor the first execution of the application; as well as Monitor one or more drawing events in one or more areas of the page; The resource analysis circuit is constructed as follows: Determine the timeline of the one or more drawing events; as well as Based on the timeline and the first delay, it is determined that the first subset of resources includes one or more blocking resources for the event; as well as The supply circuit is analyzed and configured to transmit messages, the messages including indicators identifying the one or more blocked resources.
11. The apparatus of claim 10, wherein the application is a web browser.
12. The apparatus of claim 11, further comprising: Memory devices; as well as Collection circuit; in: The resource set is used for web pages; The collection circuit is configured to collect the resource set for the webpage and store the resource set and the webpage in the memory device; and The resource acquisition circuit is further configured to retrieve the resource set from the memory device.
13. A method comprising: The resource set is analyzed via the resource acquisition circuit; A first subset of resources is selected from the resource set via a resource identifier circuit; The resource set is transmitted to the application via a resource supply circuit, wherein the first subset of resources is transmitted after a first delay; The first execution of the application is monitored via a resource monitoring circuit; The resource monitoring circuit monitors one or more drawing events in one or more areas of the page. The timeline of the one or more drawing events is determined via a resource analysis circuit; as well as The resource analysis circuitry determines, based on the timeline and the first delay, that the first subset of resources includes one or more blocking resources for the event. as well as The message is transmitted via analysis of the supply circuit, and the message includes an indicator that identifies the one or more blocked resources.
14. The method of claim 13, wherein the application is a web browser.
15. The method of claim 14, wherein: The resource set is used for web pages; The method further includes: The resource set is collected via a collection circuit; The resource set and the web pages are stored in a memory device via the collection circuit; and The resource set is retrieved from the memory device via the resource acquisition circuit.
16. An apparatus comprising: A prompt acquisition circuit is configured to parse prompt data, the prompt data being configured to provide multiple prompts that facilitate the loading of a webpage; A combinational circuit, configured to generate multiple combinations of prompts from the plurality of prompts; The automatic tuning circuit is constructed as follows: For each of the plurality of prompt combinations, the prompt combination is used to load the webpage; For each load of the webpage, determine the timing of the event associated with the load of the webpage; as well as Performance data for the multiple cue combinations is generated at least in part based on the timing. as well as A performance supply circuit is configured to transmit the performance data.
17. The apparatus of claim 16, wherein the plurality of prompts includes information for locating one or more resources for loading the webpage.
18. The apparatus of claim 17, wherein the plurality of prompts includes one or more sub-generic resource locators (URLs).
19. The apparatus of claim 18, wherein the one or more resources are elements rendered on the webpage.
20. The apparatus of claim 19, wherein the element is a graphic.
21. The apparatus of claim 16, wherein the plurality of prompts includes at least one of: a pre-connection prompt; Preload prompt; or Priority hints.
22. The apparatus of claim 16, wherein the plurality of prompts includes at least one early prompt.
23. The apparatus of claim 16, wherein the plurality of prompts includes a prompt comprising at least one subsequent prompt.
24. The apparatus of claim 16, wherein the event is maximum content rendering.
25. The apparatus of claim 16, wherein the event is full content rendering.
26. The apparatus of claim 16, wherein the event is a drawing event.
27. The apparatus of claim 16, wherein the event is the first content object drawing.
28. The apparatus of claim 16, wherein the event is visually completed.
29. The apparatus of claim 16, wherein the event is updating the layout tree.
30. The apparatus of claim 16, wherein the combination circuitry is further configured to generate the plurality of cue combinations at least in part based on the event.
31. The apparatus of claim 30, wherein the event is a snappi event.
32. The apparatus of claim 16, wherein the performance data includes one or more of the timing parameters.
33. The apparatus of claim 32, wherein the performance data further comprises one or more of the plurality of prompt combinations.
34. The apparatus of claim 33, wherein the performance data associates each of the one or more timings with one of the plurality of cue combinations.
35. The apparatus of claim 16, wherein at least one of the prompt combinations comprises an ordered set of at least some of the plurality of prompts.
36. The apparatus of claim 35, wherein the ordered cue set is at least partially based on pre-extraction priorities.
37. The apparatus of claim 35, wherein the ordered set of prompts is at least partially based on network resources.
38. The apparatus of claim 35, wherein the ordered set of prompts is based at least in part on the expected bandwidth of at least one network connection.
39. The apparatus of claim 35, wherein the ordered hint set is at least partially based on computing resources.
40. The apparatus of claim 35, wherein the ordered set of prompts is at least partially based on available memory.
41. The apparatus of claim 16, further comprising: A priority circuit is configured to generate priority labels for elements of the webpage based at least in part on the performance data; as well as A priority tag supply circuit is configured to transmit the prompt priority tag.
42. The apparatus of claim 41, further comprising: An annotation circuit is configured to inject the prompt priority tag into the webpage.
43. The apparatus of claim 42, wherein the priority tag is configured to be injected into the Hypertext Markup Language (HTML) data file of the webpage.
44. A method comprising: The prompt data is parsed by the prompt acquisition circuit, and the prompt data definition is constructed into multiple prompts to facilitate the loading of the webpage; Multiple prompt combinations are generated from the multiple prompts via a combinational circuit; The webpage is loaded using the prompt combination for each of the plurality of prompt combinations via an automatic tuning circuit. For each loading of the webpage, and via the automatic tuning circuit, the timing of events associated with the loading of the webpage is determined; Performance data for the plurality of cue combinations is generated via the automatic tuning circuit and at least in part based on the timing. as well as The performance data is transmitted via the performance supply circuit.
45. The method of claim 44, wherein the plurality of prompts includes information for locating one or more resources for loading the webpage.
46. The method of claim 45, wherein the plurality of prompts includes one or more sub-generic resource locators (URLs).
47. The method of claim 46, wherein the one or more resources are elements rendered on the webpage.
48. The method of claim 44, wherein the plurality of prompts includes at least one of: a pre-connection prompt; Preload prompt; or Priority hints.
49. The method of claim 44, wherein the plurality of prompts includes at least one early prompt.
50. The method of claim 44, wherein the plurality of prompts includes at least one late prompt.
51. The method of claim 47, wherein the element comprises a graphic.
52. The method of claim 44, wherein the event is maximum content rendering.
53. The method of claim 44, wherein the event is full content rendering.
54. The method of claim 44, wherein the event is a drawing event.
55. The method of claim 44, wherein the event is the first content object drawing.
56. The method of claim 44, wherein the event is visual completion.
57. The method of claim 44, wherein the event is updating the layout tree.
58. The method of claim 44, wherein the generation of the plurality of prompt combinations is at least in part based on the event.
59. The method of claim 58, wherein the event is a snappi event.
60. The method of claim 44, wherein the performance data includes one or more of the timings.
61. The method of claim 60, wherein the performance data further comprises one or more of the plurality of cue combinations.
62. The method of claim 61, wherein the performance data associates each of the one or more timings with one of the plurality of cue combinations.
63. The method of claim 44, wherein at least one of the prompt combinations comprises an ordered set of at least some of the plurality of prompts.
64. The method of claim 63, wherein the ordered hint set is at least partially based on pre-extraction priority.
65. The method of claim 63, wherein the ordered hint set is at least partially based on network resources.
66. The method of claim 63, wherein the ordered set of prompts is based at least in part on the expected bandwidth of at least one network connection.
67. The method of claim 63, wherein the ordered hint set is at least partially based on computing resources.
68. The method of claim 63, wherein the ordered hint set is at least partially based on available memory.
69. The method of claim 44, further comprising: Priority labels are generated for elements of the webpage based at least in part on the performance data via a priority circuit. as well as The prompt priority label is transmitted via the priority label supply circuit.
70. The method of claim 69, further comprising: The annotation circuit is configured to inject priority tags into the webpage.
71. The method of claim 70, further comprising: The priority tag is injected into the Hypertext Markup Language (HTML) data file of the webpage.
72. A non-transitory computer-readable medium storing instructions, said instructions, when loaded into at least one processor, causing said at least one processor to: Parse the resource set used for the webpage; Select a first subset of resources from the resource set; The resource set is transmitted to a web browser, wherein the first subset of resources is transmitted to the web browser after a first delay; Monitor the first execution of the web browser that uses the resource set to load the webpage; Determine the first timing of the event during the first execution; The resource set is determined for one or more blocking resources in response to the event, based at least in part on the first timing and the first delay; Parse the prompt data, the prompt data definition being constructed to facilitate the pre-fetching of one or more blocking resources as part of the loading of the webpage; Multiple prompt combinations are generated from the multiple prompts; For each of the plurality of prompt combinations, the webpage is loaded using the web browser and the prompt combination; For each load of the webpage, determine the timing of the event associated with the load of the webpage; Performance data for the multiple cue combinations is generated at least in part based on the timing. The selection of a prompt combination from the plurality of prompt combinations is based at least in part on the timing; as well as The selected combination of prompts for transmission.
73. The non-transitory computer-readable medium of claim 72, wherein the stored instructions further adapt the at least one processor to: Collect the resource set; The resource set is stored in a memory device; and Retrieve the resource set from the memory device.
74. The non-transitory computer-readable medium of claim 72, wherein the event is maximum content rendering.
75. The non-transitory computer-readable medium of claim 72, wherein the event is full-content rendering.
76. The non-transitory computer-readable medium of claim 72, wherein the event is the first content object drawing.
77. The non-transitory computer-readable medium of claim 72, wherein the event is visually completed.
78. The non-transitory computer-readable medium of claim 72, wherein the event is an update of the layout tree.
79. The non-transitory computer-readable medium of claim 72, wherein the event is a snappi event.
80. The non-transitory computer-readable medium of claim 79, wherein the stored instructions further adapt the at least one processor to: The snappi event is identified by analyzing the second execution of the web browser that loads the webpage using the resource set.
81. A system comprising: The snappi event identifier circuit is configured to parse the set of resources used for the webpage and identify one or more blocking resources; The circuit is configured as follows: Parse the data, the data definition being constructed to facilitate the pre-fetching of one or more blocking resources as part of loading a webpage; as well as Generate a recommended set of prompts for one or more of the multiple prompts; as well as A recommended supply circuit is configured to transmit the recommended prompt set.
82. The system of claim 81, wherein the snappi event identifier circuit is further configured as follows: Perform multiple loadings of the webpage; and The snappi event is determined at least in part based on the multiple loads of the webpage; The one or more blocking resources mentioned therein are associated with the snappi event.
83. The system of claim 82, wherein the snappi event corresponds to the display of the main content portion of the webpage.
84. The system of claim 82, wherein the prompting implementation circuit is further configured to: Generate distinct combinations of the multiple prompts; For each of the distinct combinations, the webpage is loaded using that distinct combination; and Determine the fastest distinct combinations that have the shortest time to complete the snappi events; The recommended suggestion set is at least in part based on the fastest distinct combinations.
85. The system of claim 84, wherein the prompting implementation circuitry is further configured to generate distinct combinations of prompts based at least in part on network resources associated with the resource set.
86. The system of claim 84, wherein the prompting implementation circuitry is further configured to generate distinct combinations of prompts based at least in part on computing resources associated with the resource set.
87. The system of claim 81, further comprising: A web browser configured to load the webpage using the set of recommended suggestions.