Dynamic optimization cache for third-party resources
Patent Information
- Application Number
- PCT/US2026/014057
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2025-02-20
- Filing Date
- 2026-02-05
- Publication Date
- 2026-08-27
Smart Images

Figure US2026014057_27082026_PF_FP_ABST
Abstract
Description
PATENT Attorney Docket No. VS2623-WO-1 DYNAMIC OPTIMIZATION CACHE FOR THIRD-PARTY RESOURCES CROSS-REFERENCES TO RELATED APPLICATIONS
[0001] This application claims the benefit of and priority to U.S. Provisional Patent Application Serial No. 63,760,975, filed February 20, 2025, and entitled “DYNAMIC OPTIMIZATION CACHE FOR THIRD-PARTY RESOURCES” (Attorney Docket No. VS2623-US-1).
[0002] All of the foregoing patents and / or patent applications are incorporated herein by reference in their entirety for all purposes.
[0003] This application is also related to the following patents and / or patent applications, each of which is incorporated herein by reference in their entirety for all purposes:
[0004] U.S. Provisional Patent Application Serial No. 63,595,695, filed on November 2, 2023, and entitled “TUNING HINTS FOR IMPROVED WEB BROWSER PERFORMANCE” (Attorney Docket No. VS2466-US-1); International Patent Application No. PCT / US2024 / 054282, filed November 1, 2024, and entitled “SYSTEMS, METHODS, AND APPARATUSES FOR IDENTIFYING SIGNIFICANT WEBPAGE EVENTS AND TUNING WEB BROWSER HINTS” (Attorney Docket No. VS2466-WO-1); and International Patent Application No.PCT / US2025 / 027270, filed May 1, 2025, and entitled “SYSTEMS, METHODS, AND APPARATUSES FOR IDENTIFYING BLOCKING RESOURCES OF CONTENT-RECTANGLE-BASED WEBPAGE EVENTS AND TUNING WEB BROWSER HINTS” (Attorney Docket No.VS2620-WO-1).BACKGROUND
[0005] Webpages are made up of numerous resources, including images, scripts, stylesheets, fonts, and other media files, which browsers must fetch and / or access, often from remote / non-local storage / servers, to render a webpage’s content fully. These resources vary widely in their importance and impact on the user experience. While some resources are essential for displaying the primary content (e.g., above -the -fold content, such as key images, main text, and layout styling), other elements are less critical. For example, images located further down the webpage, background scripts, or secondary styling may be non-essential for immediate functionality and visual presentation when the page first loads.
[0006] Resources may be fetched / retrieved from third-party domains other than the first-party domain hosting a requested webpage that utilizes the resources. However, such third-party resources may impact the loading and / or rendering of a webpage. For example, establishing a network connection consumes computing resources and requires setup time, and network connections to the third-party domains are often in addition to the network connection to the first-party domain.PATENT Attorney Docket No. VS2623-WO-1 Further, network connections to third-party domains may have limited bandwidth and / or availabilities. Further still, a server on a third-party domain may itself have limited capacity to respond to requests for hosted resources and / or have limited and / or intermittent availability (e.g., “uptime”).SUMMARY
[0007] Embodiments of the current disclosure provide for a method for accelerating webpage rendering. The method includes: identifying a resource used in a first visit to a webpage, where the webpage is hosted at a first-party domain; determining that the resource has an address value structured to cause a client computing device to obtain the resource from a third-party domain; and generating a computer-readable modification instruction that modifies the address value for the resource, where the modified address value is structured to cause the client computing device to obtain the resource from the first-party domain for a second visit to the webpage.
[0008] Other embodiments of the current disclosure provide for an apparatus for accelerating webpage rendering. The apparatus includes: at least one processor; and at least one memory device. The at least one memory device stores computer-readable instructions that, when loaded into the at least one processor, cause the at least one processor to: identify a resource used in a first visit to a webpage, wherein the webpage is hosted at a first-party domain; determine that the resource has an address value structured to cause a client computing device to obtain the resource from a third-party domain; and generate a computer-readable modification instruction that modifies the address value for the resource. The modified address value is structured to cause the client computing device to obtain the resource from the first-party domain for a second visit to the webpage.
[0009] Further embodiments of the current disclosure provide for another method for accelerating webpage rendering. The method includes: obtaining a computer-readable modification instruction associated with a webpage, wherein the webpage is hosted by a first-party domain; and modifying, based at least in part on the computer-readable modification instruction, an address value for a resource for the webpage, wherein the resource is associated with a third-party domain.
[0010] Still further embodiments of the current disclosure provide for an apparatus for accelerating webpage rendering. The apparatus includes: at least one processor; and at least one memory device. The at least one memory device stores computer-readable instructions that, when loaded into the at least one processor, cause the at least one processor to: obtain a computer-readable modification instruction associated with a webpage, wherein the webpage is hosted by a first-party domain; and modify, based at least in part on the computer-readable modification instruction, an address value for a resource for the webpage, wherein the resource is associated with a third-party domain.PATENT Attorney Docket No. VS2623-WO-1
[0011] Yet further embodiments of the current disclosure provide for a method for accelerating webpage rendering. The method includes identifying a resource used in a first visit to a webpage, where the webpage is hosted at a first-party domain; and determining that the resource has an address value structured to cause a client computing device to obtain the resource from a third-party domain. The method further includes: determining a storage location for the resource that improves a snappiness of the webpage; and generating a computer-readable modification instruction that modifies the address value for the resource, wherein the modified address value is structured to cause the client computing device to obtain the resource from the storage location for a second visit to the webpage.
[0012] Still other embodiments of the current disclosure provide for an apparatus for accelerating webpage rendering. The apparatus includes: at least one processor; and at least one memory device. The at least one memory device stores computer-readable instructions that, when loaded into the at least one processor, cause the at least one processor to: identify a resource used in a first visit to a webpage, where the webpage is hosted at a first-party domain; and determine that the resource has an address value structured to cause a client computing device to obtain the resource from a third-party domain. The computer-readable instructions further cause the at least one processor to: determine a storage location for the resource that improves a snappiness of the webpage; and generate a computer-readable modification instruction that modifies the address value for the resource, wherein the modified address value is structured to cause the client computing device to obtain the resource from the storage location for a second visit to the webpage.
[0013] These and other systems, methods, objects, features, and advantages of the present disclosure will be apparent to those skilled in the art from the following detailed description of the preferred embodiment and the drawings.
[0014] All documents mentioned herein are hereby incorporated in their entirety by reference. References to items in the singular should be understood to include items in the plural, and vice versa, unless explicitly stated otherwise or clear from the text. Grammatical conjunctions are intended to express any and all disjunctive and conjunctive combinations of conjoined clauses, sentences, words, and the like, unless otherwise stated or clear from the context.BRIEF DESCRIPTION OF THE FIGURES
[0015] The disclosure and the following detailed description of certain embodiments thereof may be understood by reference to the following figures:
[0016] Fig. 1 depicts aspects of a computer architecture for viewing webpages, in accordance with embodiments of the current disclosure;PATENT Attorney Docket No. VS2623-WO-1
[0017] Fig. 2 depicts a timeline representation of events associated with a webpage and / or application, in accordance with embodiments of the current disclosure;
[0018] Fig. 3 depicts an example apparatus for accelerating webpage rendering, in accordance with embodiments of the current disclosure;
[0019] Fig. 4 depicts a block diagram of a system for accelerating webpage rendering, in accordance with embodiments of the current disclosure;
[0020] Fig. 5 depicts a method for accelerating webpage rendering, in accordance with embodiments of the current disclosure;
[0021] Fig. 6 depicts further aspects of the method of Fig. 5 for accelerating webpage rendering, in accordance with embodiments of the current disclosure;
[0022] Fig. 7 depicts further aspects of the method of Fig. 5 for accelerating webpage rendering, in accordance with embodiments of the current disclosure;
[0023] Fig. 8 depicts further aspects of the method of Fig. 5 for accelerating webpage rendering, in accordance with embodiments of the current disclosure;
[0024] Fig. 9 depicts a flow diagram of the system of Fig. 4 performing aspects of the method shown in Figs. 5-8, in accordance with embodiments of the current disclosure;
[0025] Fig. 10 depicts another method for accelerating webpage rendering, in accordance with embodiments of the current disclosure;
[0026] Fig. 11 depicts further aspects of the method of Fig. 10, in accordance with embodiments of the current disclosure;
[0027] Fig. 12 depicts yet another method for accelerating webpage rendering, in accordance with embodiments of the current disclosure; and
[0028] Fig. 13 depicts yet another method for accelerating webpage rendering, in accordance with embodiments of the current disclosure.DETAILED DESCRIPTION
[0029] Disclosed herein are systems, methods, and / or apparatuses that enhance a webpage’s performance by introducing novel and nonobvious techniques for improving the snappiness of the webpage. As is to be understood, a webpage’s performance and / or snappiness can often be hindered by the amount of time it takes to retrieve and / or load / render / display resources from third-party domains. Embodiments of the techniques disclosed herein, however, address, among other things, inefficiencies in the loading and / or rendering of a webpage that occur when browsers fetch and / or process resources from third-party domains that may impact a webpage’s snappiness, and / or inefficiencies that occur when third-party resources may not be useful for the timely completion ofPATENT Attorney Docket No. VS2623-WO-1 events and / or tasks during rendering and / or loading of a webpage. In particular, certain aspects of the current disclosure provide a framework for optimizing the loading and rendering of third-party resources through a dynamic optimization cache, enhancing the efficiency and performance of webpages and / or web applications.
[0030] For example, embodiments of the current disclosure provide novel and nonobvious methods of identifying third-party domain resources for a webpage that can be stored in a first-party domain cache to improve the snappiness of the webpage, while also directing webpage browsers to retrieve / fetch the third-party resources from the first-party cache. Retrieval of the third-party resources from the first-party cache may reduce the number of network connections that need to be established by a client computing device, which may improve the webpage’s snappiness. Retrieval of the third-party resources from the first-party cache may also provide a more efficient network connection for the client computing device to retrieve / fetch the third-party resources over, which can also improve the webpage’s snappiness.
[0031] However, it is not always the case that storage / copying of a third-party resource to a first-party cache improves a corresponding webpage’s snappiness. For example, a client computing device may have a faster and / or more reliable network connection to the third-party domain over the network connection to the first-party cache. As another example, the third-party domain may have more computing resources than the first-party domain so that it can serve resources faster. As yet another example, caching a third-party resource on a first-party domain may provide no benefit to a webpage’s snappiness in situations where the network connections between the client computing device and the first- and third-party domains are substantially equivalent in speed and / or reliability. Additionally, copying of some third-party resources into a first-party cache may worsen a corresponding webpage's snappiness (e.g., where the network connection between the client computing device and the third-party domain is faster than the network connection between the client computing device and the first-party domain). Thus, embodiments of the current disclosure also provide for novel and nonobvious methods of identifying which third-party resources whose copying into a first-party cache does improve the snappiness of the corresponding webpage. In other words, embodiments of the current disclosure provide for novel and nonobvious methods of identifying and selectively copying those third-party resources into a first-party cache, whose storage in and fetching from the first-party cache does improve a corresponding webpage’s snappiness.
[0032] Further, the storage in and retrieval of a given third-party resource from a first-party cache may improve a webpage’s snappiness for a first user while decreasing the webpage’s snappiness for a second user. For example, the second user’s client-computing device may be physically closer to the third-party server hosting the third-party resource as compared to the first-party cache, while thePATENT Attorney Docket No. VS2623-WO-1 first user’s client-computing device may be physically closer to the first-party cache as compared to the third-party server. As another example, the first user’s client-computing device may have a more reliable and / or faster network connection to the first-party cache, as compared to the network connection to the third-party server hosting the third-party resource, while the second user’ s clientcomputing device may have a faster and / or more reliable network connection to the third-party server, as compared to network connection to the first-party cache. Thus, some embodiments of the current disclosure provide for third-party resource fetching approaches in which the caching and / or fetching of a webpage’s third-party resources is tailored (at the individual resource level) to a particular client-computing device’s environment / context.
[0033] Thus, the methods and systems described herein offer significant benefits in enhancing webpage and / or application performance. For example, by optimizing the loading and rendering of third-party resources, the disclosed methods and systems provide faster load times and a more responsive user experience. Embodiments of the current disclosure may also intelligently prioritize resources, reducing bandwidth consumption such that content is loaded promptly. Moreover, embodiments described herein may contribute to reduced latency by caching and / or optimizing third-party resources, allowing for quicker access to data and resources and reducing bandwidth usage.
[0034] While many of the example embodiments are disclosed herein in the context of improving a webpage’s performance as displayed by a web browser (a type of computer application), it is to be understood that embodiments of the current disclosure are applicable to other types of computing applications (e.g., web applications, desktop applications, smart device applications, and / or the like) which access data (e.g., database records and / or other types of resources, etc.) stored in different domains.
[0035] The current disclosure may refer and / or relate to one or more of the following terms.
[0036] “Snappiness”, as used herein, may be understood as a measure of the time elapsed between two or more events during the lifecycle of a webpage and / or application. In embodiments, events may include one or more network and connection events (e.g., DNS resolution, first byte received, request initiation), rendering and visual display events (e.g., first paint, above the fold rendering, first meaningful paint, etc.), interactivity and user engagement events (e.g., time to interactivity, first input delay, etc.), resource loading and execution events (e.g., DOM content loaded event, script execution completion, background resource loading completion, etc.), animation and visual effects events, and / or custom user-defined events.
[0037] In one example, snappiness may be the time interval between the initiation of a request for a webpage (e.g., when a user clicks a link and / or enters a URL) and the occurrence of a rendering event, such as First Contentful Paint (FCP), Largest Contentful Paint (LCP), Time to InteractivePATENT Attorney Docket No. VS2623-WO-1 (TTI), and / or the like. By measuring the time between the initial request and these rendering events, developers can assess how efficiently a webpage or application delivers its content and functionality. In another example, snappiness may be measured as the time between the request for a page and the completion of all above-the-fold content rendering, providing a measure of time that the user can view and interact with important elements. Shorter intervals between events generally indicate higher snappiness, as users experience faster load times and reduced delays in interactivity.
[0038] In embodiments, snappiness can refer to the time required to complete a sequence of events during the lifecycle of a webpage or application interface. Rather than focusing on individual events, snappiness may encompass the overall duration needed for a series of events to occur.
[0039] Snappiness, as used herein, may also be measured based on user feedback, capturing the subjective perception of how responsive or usable a webpage or application is perceived by the user. In this context, the measurement of snappiness may be tied to events that reflect the user's experience, such as the moment a user indicates that they perceive the page as responsive, functional, or ready for interaction. For example, snappiness may be assessed through direct user input, such as surveys, ratings, and / or other forms of feedback where users specify whether they feel the page is responsive and / or usable. This feedback can be collected in real-time and / or retrospectively. In another example, snappiness may be inferred from implicit user behavior, such as the time at which users begin interacting with the page (e.g., clicking buttons, scrolling, or entering text). The interactions can serve as indicators that users perceive the page as ready for use. For instance, the time between a user’s request for a webpage and their first interaction with the interface can provide a measure of snappiness.
[0040] In some cases, snappiness may be related to the timing of interactions or processing activities performed by another application, server, and / or device in relation to the content of a webpage or application. For example, snappiness may encompass the timing of interactions between the webpage and third-party services, such as payment gateways, authentication systems, or content delivery networks (CDNs).
[0041] Snappiness, as used herein, may be represented as a numerical value that quantifies the time of or between one or more events. The value can take different forms depending on the context and the method of measurement. In one example, snappiness may be expressed as the actual time elapsed, in units such as milliseconds or seconds, between specific events or sequences of events. In another example, snappiness may also be represented as a scaled or normalized number that is proportional or inversely proportional to the measured time. For instance, a lower numerical value on a predefined scale could correspond to shorter times and higher responsiveness, while a higher value could indicate longer times and reduced responsiveness. Scaling may be applied to make thePATENT Attorney Docket No. VS2623-WO-1 measurement compare performance across different systems, devices, or network conditions. For example, a scale from one (1) to one-hundred (100) could be used, where 1 represents extremely fast responsiveness and one-hundred (100) represents significant delays. In another example, snappiness may be calculated as a composite metric that combines multiple time-based measurements into a single value. For example, it could aggregate the times for key events such as FCP, LCP, and TTI, weighted according to their impact on user experience.
[0042] Snappiness, as used herein, may also be represented as a non-numerical value, such as a relative descriptor, to provide a qualitative assessment related to the timing of the events. These descriptors can be used to categorize performance into different levels that can be understood and interpreted, particularly in contexts where precise numerical measurements may not be necessary or practical. For example, snappiness may be described using relative terms such as “low”, “medium”, or “high”, corresponding to different ranges of timing. In another example, snappiness may be described using relative terms such as “adequate” or “insufficient” that correspond to ranges of timing that are deemed acceptable or too long, respectively.
[0043] Snappiness can be determined through controlled laboratory setups or by analyzing real user data collected during actual usage. In a lab environment, developers can simulate various conditions, such as network speeds, device capabilities, and browser configurations, to measure snappiness under predefined scenarios. In some instances, snappiness can also be assessed using real user data, often referred to as Real User Monitoring (RUM). RUM involves collecting performance metrics from users as they interact with a webpage or application in real-world conditions. In embodiments, snappiness can be determined through a combination of controlled laboratory testing and RUM data analysis.
[0044] Fig. 2 illustrates a timeline representation of events associated with a webpage and / or application. As a page or application is processed (e.g., loaded, manipulated, and / or executed) one or more events or milestones may occur. The figure illustrates four (4) distinct events, labeled Event 1, Event 2, Event 3, and Event 4, which occur sequentially along the timeline. The intervals between these events are visually represented (Tl, T2, T3, T4) and correspond to elapsed time between different sets of events.
[0045] For example, the time between Event 1 and Event 2 may correspond to the duration required for the browser to establish a network connection and receive the first byte of data. Similarly, the interval between Event 2 and Event 3 may represent the time taken to render the first visible content, such as text or images, while the time between Event 3 and Event 4 may reflect the completion of interactivity milestones, such as enabling user input or executing critical scripts.PATENT Attorney Docket No. VS2623-WO-1
[0046] In relation to Fig. 2, snappiness may be calculated based on the timing between one or more events that occur sequentially and / or are separated by other intervening events during the lifecycle of a webpage or application. In one example, snappiness may be based on an individual timing interval (e.g., T1 or T2). In another example, snappiness may be based on the cumulative timing of multiple sequential events such as T4. In yet another example, snappiness may be based on the duration of timing between multiple different time spans that may be disjointed (e.g., T1 and T2), overlapping (e.g., T4 and Tl), and / or the like.
[0047] “Webpage resources”, “application resources”, and / or “resources”, as used herein, refer to visual (e.g., text, image, video, or the like) objects, audio objects, collections of one or more instructions (e.g., a page encoded in hypertext, a style sheet such as a cascading style sheet (CSS) for displaying and / or playing a webpage resource, a script file such as a JavaScript file, or the like), and / or a network service made available and / or provided by one device on a network to other devices upon request by one of the other devices. In embodiments, “webpage resources” may include the parts / elements that a webpage uses to function and / or display content. Resources can include any element or aspect of a webpage including HTML code, CSS code / files, scripts, images, fonts, multimedia, libraries, plugins, data files (e.g., JSON, XML), and the like. Resources may include parts that are requested and loaded by the browser when a user visits a webpage. Resources may also include parts that are executed on a client device, and, in some cases, they may include parts that are executed remotely.
[0048] “Event resources”, as disclosed herein, refer to resources that are needed to complete or facilitate the occurrence of a specific event during the lifecycle of a webpage or application. Event resources may include resources used by a webpage and / or application to display elements and / or to provide functionality that contribute to the purpose of the webpage (e.g., displaying a graphical picture of a good for purchase by a user and providing menu buttons to facilitate the purchase). The completion of an event (e.g., rendering above-the-fold content or enabling user input) often depends on the timely availability and processing of these resources.
[0049] Event resources may include blocking resources (e.g., resources that other webpage resources depend on and / or otherwise impact the rendering / display of the other webpage resources). Event resources may also include non-blocking resources (e.g., below-the-fold images, analytics, etc.). An event resource may be associated with multiple events and can be a blocking resource for more than one event. For example, a stylesheet may be required to render the layout of above-the-fold content during the initial loading phase and may also be necessary for styling interactive elements that appear later in the user experience. Similarly, a script may be needed for executing functionality tied to both the rendering of visible content and the activation of user input features.PATENT Attorney Docket No. VS2623-WO-1
[0050] A “blocking resource”, as used herein, may be an event resource whose absence or delayed availability may hinder or prevent the occurrence of a specific event during the lifecycle of a webpage or application. Blocking resources may be needed to facilitate the timely completion of events, such as rendering above -the-fold content, establishing interactivity, and / or executing scripts that contribute to functionality. For example, a blocking resource may include a stylesheet required for rendering the layout of visible content or a script necessary for enabling user input functionality. The absence or delay in loading such resources can result in incomplete or non-functional webpage elements, thereby obstructing the event's completion or occurrence. As such, blocking resources may impact a webpage’s snappiness. As will be understood, blocking resources may include resources that a webpage has a fallback and / or alternative sequence of instructions to use in the event the resource is not available and / or delayed.
[0051] A “non-blocking resource”, as used herein, refers to an event resource that may not be strictly necessary for an event but may contribute to the webpage’s purpose and / or user’s overall experience with the webpage.
[0052] While certain embodiments are disclosed herein in the context of blocking resources, it is to be appreciated that such context is provided as a non-limiting example and that such embodiments are not limited to blocking resources. For example, such embodiments of the current disclosure may concern prioritized resources (e.g., resources associated with a prioritization), event resources (as disclosed herein), selected resources (e.g., resources that are selected / identified for pushing to a client device), and / or other types of resources that, while not necessarily blocking, may be likely to impact a webpage’s rendering and / or loading speed and / or “snappiness”.
[0053] Webpages and applications may be composed of numerous resources, such as images, CSS, JavaScript files, fonts, and multimedia each of which can impact how and when specific parts of a page are displayed. In many instances, resources may include complex dependency chains. For example, JavaScript may rely on CSS for styling elements, or an image might be part of a script-driven animation. These dependencies may mean that removing or deprioritizing one resource can impact other elements or delay events altogether. In many instances, webpages may include dynamic content loading. Many webpages rely on JavaScript to load additional resources dynamically, often based on user interactions. Resources loaded after the initial render, such as content loaded via AJAX or API calls, can still affect the page’ s layout and functionality. In many instances, timing of events may depend on user-specific content. Event resources that are blocking resources may be dependent on various factors such as the user’s device, screen size, or geographic location. For example, high-resolution images may be used on but non-essential on mobile.PATENT Attorney Docket No. VS2623-WO-1
[0054] A "hint," as used herein, refers to an instruction and / or directive provided to a browser, application, and / or other computing system to optimize the management, loading, or rendering of resources associated with a webpage or application. Hints can be used to prioritize resources for loading and / or rendering. For example, hints may be used to designate a resource for preloading and / or early fetching such that that a browser prioritizes fetching the designated resources. Hints may be used to create a more responsive and fluid user experience by reducing delays and / or the time to completion of tasks and / or events. Hints serve as guidance to prioritize, prefetch, preload, or otherwise manage resources in a manner that improves performance, reduces delays, and enhances the user experience. For example, a hint may indicate that a specific resource, such as a stylesheet or script, should be preloaded to ensure its availability during or before a rendering event.Alternatively, a hint may suggest deprioritizing non-essential resources, such as images located further down the page, to free up bandwidth and processing power for higher-priority tasks.Resource hints provide browsers and / or other applications with advance information about resources that will be needed, enabling more efficient loading strategies for webpages and / or associated resources.
[0055] Hints may help browsers make decisions about loading sequences, especially for resources that impact initial display and interactivity of a webpage. Through hints, key resources can be loaded promptly, reducing perceived wait times and enhancing page responsiveness.
[0056] Hints can take various forms, including metadata embedded in webpage code, scripts, or browser directives, and may be defined based on resource type (e.g., CSS, script, image, and / or the like) or event-specific requirements. Non-limiting examples of hints include: preconnects, preloads, prioritizations, prefetches, lazy-load directives, other types of actions, and / or any type of instruction structured to improve the snappiness of a webpage and / or other type of application. For example, hints may direct a webpage browser and / or other application to prioritize only the resources for specific events.
[0057] The terms “connection” and “network connection”, as used herein, refer to the establishment of a communication link between two devices, systems, processes, entities, or the like to enable the exchange of data or resources. A connection may involve various protocols and mechanisms to facilitate communication, such as establishing a network path, negotiating security parameters, or synchronizing data transmission. Connections can be temporary or persistent and may be initiated by a client device, server, or intermediary system. Non-limiting examples of connections include TCP connections, QUIC connections, peer to peer connections, and / or the like. Connections may be implemented via wired and / or wireless physical connections (e.g., fiber optic cables, radio wave connections, laser-based air network connections, and / or the like). A connection may be physicalPATENT Attorney Docket No. VS2623-WO-1 (e.g., formed by a physical link / path between computing devices) and / or logical (e.g., a virtual area network (VLAN)).
[0058] The term “session” as used herein, refers to a temporary interaction and / or communication period between two or more devices, systems, or entities, typically established to exchange data, perform tasks, or maintain state information. A session may be initiated when a connection is established and persists for the duration of the interaction, allowing the involved parties to maintain context and continuity throughout the communication. Non-limiting examples of sessions include web sessions, streaming sessions, network sessions, and the like. A session may span more than one connection (e.g., a session may be maintained while a supporting connection drops and a new supporting connection is established).
[0059] The terms “preconnect” and / or “preconnection”, as used herein, refers to a proactive technique that establishes a connection to another resource (e.g., server) before the resource itself is requested by the browser or application. In the context of web pages, preconnect allows the browser to perform tasks such as DNS resolution, TCP handshake, and SSL / TLS negotiation in advance, reducing the time required to fetch the resource when it is needed. By initiating these connection-related processes early, preconnect reduces latency and accelerates the loading of resources. A nonlimiting example of a preconnect includes an indication that a connection should be established to a resource’s I object's domain early but where the web browser may stop short of a preloading (or prefetching) of the resource itself. Another non-limiting example of a preload includes an indication that an entire resource / object should be downloaded early.
[0060] The terms “computer resources”, and / or “computing resources” may refer to the amount of memory and / or processing power available to a computer system to execute an application (e.g., a web browser, and / or to perform calculations). Non-limiting examples of the same include a number of processors, an amount of memory, and / or any other metric of hardware related to the computational power of a computing system (e.g., a number of floating-point operations per second (FLOPS) and / or any other metric of rating the performance and / or computational power of a computing system).
[0061] The terms “real user monitoring (RUM)” and / or “RUM data”, as used herein, refer to information / data collected from and / or corresponding to one or more users and their interactions with a website and / or any type of computer application. Non-limiting examples of RUM include data concerning real users' page load times, user paths, error rates, session duration, bounce rate, and / or any other metric that describes a user’ s behavior and / or experience visiting / viewing a webpage and / or application interface.PATENT Attorney Docket No. VS2623-WO-1
[0062] As used herein, a “parent” resource may form part of a resource hierarchy where a parent resource includes, among other elements, one or more instructions to fetch a “child” and / or “sub” resource from a specified device. Examples of a parent I sub resource include a webpage (e.g., written in a markup language such as hypertext markup language (HTML), extensible markup language (XML), or the like), a media manifest file or other file that references other media objects (e.g., a movie, a prerecorded television show), a service providing access to a streaming media object (e.g., a podcast, a live television broadcast, streaming music, or the like) that references other media objects, a service for transferring a specified data file that references other data objects, or the like. Any of the foregoing can also be a child / sub resource. Additional examples of child I sub resources include images, audio files, video files, style files such as cascaded style sheets (CSS), executable scripts such as JavaScript, and the like. Child / sub resources may further include sub elements of resources. For example, a resource such as a script file may include a plurality of scripts, and each of the plurality of scripts may be a sub-resource (SR) of the script resources.
[0063] A “webpage element”, as used herein, may refer to blocks that define the structure, content, and / or functionality of a webpage. Webpage elements may be code definitions and / or may be associated with resources. Non-limiting examples of webpage elements include HTML tags, wherein each tag can be an element.
[0064] A “webpage event” or an “application event”, as disclosed herein, may refer to specific moments, events, and / or actions that occur during the lifecycle of a webpage and / or application. Webpage events may occur from when a page starts loading to when the webpage is fully interactive, to after it has been displayed, to after it has been left by the user.
[0065] “Significant events”, “snappi-events”, and / or “blocking events”, as used herein, may refer to a specific webpage event (and / or an application event) and / or a set of webpage events and / or application events that are designated as having and / or relating to a meaningful and / or impactful completion of the loading, rendering, and / or other similar process for a webpage (e.g., the “snappiness” of a webpage). Significant and / or blocking events may be attributed as significant by a user and / or by computing system embodiments of the current disclosure (e.g., according to criteria and / or scoring methods). Significance may be attributed to various contexts, such as practical importance, percentage of load / render, time, etc. Examples of significant events include First Paint (FP) (the first point at which anything is rendered on the screen), First Contentful Paint (FCP) (the first piece of content is painted on the screen), Largest Contentful Paint (LCP) (the largest visible element is rendered). First Meaningful Paint (the primary content of the page is rendered), Time to Interactive (TTI) (the page becomes interactive, meaning it has finished rendering content and is responsive to user inputs), DOMContentLoaded (DCL) (the initial HTML document is fully loadedPATENT Attorney Docket No. VS2623-WO-1 and parsed, but before other resources like stylesheets, images, and scripts are fully loaded), First Input Delay (FID) (the browser to respond to the first user interaction), and the like. In embodiments, significant events may include custom events that include a custom combination of one or more of loading, rendering, or interactivity milestones.
[0066] A “delay", as used herein with respect to resources, may refer to a period of time during which access by an application (e.g., a webpage browser) to resource(s) is withheld and / or restrained. A delay may be extra and / or an additional time period as compared to the normal and / or average time period for when resources are requested, loaded, and / or made available. A delay may be purposely added and / or may occur due to operational irregularity. A delay may be inserted at a browser, external data providers, and / or the like. A delay may be added via scripts, server-side delays, browser instructions, etc. A delay from an operational irregularity may originate from network congestion, memory bottlenecks, processing limitations, etc.
[0067] A “paint area”, as used herein, refers to an area where the browser renders elements such as text, images, videos, sound / audio, and / or other multimedia content. A paint area may be a paint of the user viewport, and / or include different shapes such as rectangles, circles, or any other shape. In embodiments, a paint area may include disjoint areas.
[0068] “Deprioritize”, as used herein, refers to reducing the importance of resources. For example, deprioritized resources may be removed as candidates for hints.
[0069] A “resource identifier”, as used herein, includes data that identifies the location of one or more resources. In some examples, a resource identifier may be part of a “Universal Resource Locator” (URL). For example, a URL may include a “host identifier” and a “resource identifier”, where the “host identifier” identifies a host server from which the resource is to be fetched, and the “resource identifier” identifies the resource itself with respect to other resources on the host server. In some examples, the resource identifier is a path to the resource on the host server.
[0070] “Loading”, as used herein with respect to a webpage, is to be understood broadly. In the context of webpages, "loading of a page" refers to one or more of fetching, rendering, placing in memory, or preparing all necessary resources so that the webpage is functional. This includes not only downloading resources like HTML, CSS, JavaScript, images, and fonts but also rendering these resources within the browser to visually display the content, establish interactivity, and provide responsive behavior.
[0071] “Rendering”, as used herein with respect to a webpage, refers to the process of converting code (e.g., computer readable code such as HTML, CSS, JavaScript, etc.) into viewable content.
[0072] “Transmitting”, as used herein with respect to a webpage, is to be understood broadly. In the context of webpages, "transmitting" refers to the process of delivering webpage content and / orPATENT Attorney Docket No. VS2623-WO-1 resources to a client, either by sending them over a network or by providing them directly within a local server environment. When transmitting over a network, resources such as HTML, CSS, JavaScript, images, and multimedia files may be sent from a remote server to the client’s browser through network protocols like HTTP or HTTPS. Alternatively, in a local server environment, transmitting may involve making these resources available directly from within the server’s storage, bypassing the need for external network transfer. Transmitting as used herein may also refer to passing and / or sharing data and / or values between two or more circuits and / or other devices.
[0073] The term “domain”, as used herein, refers to a physical and / or logical grouping of computing devices. Non-limiting examples of a domain include computing devices having network identifiers (e.g., IP addresses) falling within a same network address space; computing devices that share a common gateway (e.g., devices behind a common external router); computing devices under a common security and / or policy group; etc. Computing devices in / under the same domain may share common network policies and / or network resources (e.g., DNS servers, DHCP servers, NTP servers, NAS devices, etc.). A domain may be identifiable by an identifier (e.g., IP address of gateway router, a domain name, and / or the like).
[0074] The term “first -party domain”, as used herein, refers to a domain that includes the referenced computing device and / or resource. For example, the first party domain of a webpage refers to the domain that includes the webserver hosting the webpage.
[0075] The term “third-party domain”, as used herein, refers to a domain that is distinct from the domain that includes the referenced computing device. For example, foo.com might be a third-party domain with respect to a webserver included under baz.com.
[0076] The term “fourth-party domain”, as used herein, refers to a domain that is distinct from both a first-party domain and a third-party domain. For example, “opp.com” might be a fourth-party domain with respect to “baz.com” (a first party domain hosting a webserver for the webpage “baz.com”) and “foo.com” (a third-party domain hosting resources used by the webpage “baz.com”).
[0077] The term “substantially”, as used herein, means sufficient to work for the intended purpose. If used with respect to a numerical value or range, substantially means within ten percent.
[0078] As will be understood, embodiments of the current disclosure are not limited to the embodiments and applications disclosed herein or to the manner in which the embodiments and applications operate or are described herein. For example, while embodiments of the current disclosure are discussed in the context of improving the snappiness of a webpage as rendered and / or loaded by a web browser application, it is to be understood that the concepts and / or embodiments disclosed herein can be applied to other types of computer applications that fetch resources from non-local storage (e.g., smart phone applications, vehicle infotainment applications, tabletPATENT Attorney Docket No. VS2623-WO-1 applications, desktop applications, spacecraft-based applications, etc.). As such, the term “webpage”, as used herein, should be understood to include embodiments of the current disclosure implemented by computer applications that fetch resources from non-local storage (e.g., smart phone applications, vehicle infotainment applications, tablet applications, desktop applications, spacecraftbased applications, etc.). For example, in a non-limiting embodiment, one or more aspects of a web browser and / or web browsing functionality may be included in an application (e.g., a vehicle infotainment system, a desktop web-based application, and / or the like). Accordingly, the term “webpage”, as used herein, may refer to a component of an application that uses resources from nonlocal storage, and the terms “browser”, “web browser”, “internet browser”, and / or “webpage browser”, as used herein, may refer to the application that includes the component.
[0079] Accordingly, referring to Fig. 1, a computer architecture 100 for providing and viewing webpages and / or websites (e.g., multiple webpages under a single and / or related domain) includes one or more original / origin hosting servers 110 and one or more client devices 112, 114, 116, and / or 118 that connect to the one or more original hosting servers 110 via a network 120. Each client device 112, 114, 116, 118 may include a web browser 122 structured to request and / or view one or more webpages hosted by the original hosting servers 110.
[0080] In embodiments, the computer architecture 100 may include one or more wireless portions (e.g., cellular, Bluetooth, and / or WiFi connections (represented by antenna 124), a satellite 126 with a corresponding uplink 128 and downlink 130) that form part of the network 120. In embodiments, one or more portions of the network 120 (e.g., the satellite 126, uplink 128, and / or downlink 130) may have high-latency and / or low bandwidth.
[0081] In embodiments, the browser 122 may be disposed on a client device 114, (e.g., a laptop, desktop, etc.) connected to the network 120 via a landline (e.g., a coaxial, fiber, telephone line, etc.). The browser 122 may be disposed on a mobile client device 112, (e.g., a smartphone, tablet, etc.) connected to the network 120 via a cellular connection 124. The browser 122 may be disposed on a client device 116 (e.g., a laptop, desktop, etc.) connected to the network 120 via a satellite downlink 130 in a remote location (e.g., Christmas Island). As will be understood, client device 118 may represent a plurality of client devices located on a vehicle, (e.g., a plane, ship, spaceship, car, truck, motorbike, bicycle, etc.) that has a satellite downlink through which the client devices connect to the network 120.
[0082] The computer architecture 100 may include one or more intermediate devices (e.g., servers) such as one or more resource servers 132, one or more content delivery network (CDN) servers 134 and 136, one or more hinting servers 138, and / or other types of servers 140 and / or computing devices that assist and / or improve the ability of the client devices 112, 114, 116, 118 to view the onePATENT Attorney Docket No. VS2623-WO-1 or more webpages and / or improve the ability of the one or more original hosting servers 110 (also referred to herein as origin servers and / or origins) to serve / provide the one or more webpages (e.g., one or more hint discovery and / or optimization / tuning servers). Further nonlimiting examples of intermediate devices include generic intermediary servers, edge computing platforms distinct from CDNs, distorted compute networks, and / or the like. As will be understood, the one or more original hosting servers 110 and / or the one or more intermediate devices 132, 134, 136, 138 and / or 140 may be non-virtualized servers (also known as physical and / or bare-metal servers) and / or virtualized servers that may be hosted by a single datacenter / server farm disposed at a single physical site, and / or hosted via a distributed cloud-based architecture disposed across multiple physical sites. As such, the one or more original hosting servers 110 and / or the one or more intermediate devices 132, 134, 136, 138 and / or 140 may be physically separated (e.g., running on different physical machines) and / or logically separated (e.g., running in different logical portions (e.g., virtual machines, containers, etc.) of a common physical computing architecture).
[0083] In embodiments, the one or more original hosting servers 110 include the root directory which, in turn, may include the index file(s) for the one or more webpages (e.g., index.php, index.html, default.html, any other file types containing a markup language, and / or any data file that defines and / or guides the layout of a webpage). As used herein, the terms “root” and / or “root file” may refer to one or more of the files in the root directory that are served by a web hosting server. In embodiments, a webpage served by a webserver 110 may be a standalone page (e.g., a single webpage site). In embodiments, a webpage served by a webserver 110 may form part of a multipage site (e.g., an ecommerce site).
[0084] The one or more resource servers 132 may store one or more resources for the one or more webpages served by the one or more original hosting servers 110. As disclosed herein, the stored resources may include image files, web applications (e.g., Java applets), sound, video, and / or other types of media files, and / or any other type of webpage resource disclosed herein. The one or more resource servers 132 may be, in whole or in part, co-located with the one or more original hosting servers 110 and / or located apart from the one or more original hosting servers 110. For example, in embodiments, the one or more resource servers 132 may form part of a backend architecture hosted and / or owned by a web hosting service company, and / or hosted and / or owned by a third-party distinct from one or more parties operating and / or owning the one or more original hosting servers 110 and / or their hosted webpages and / or websites.
[0085] The one or more content delivery network (CDN) servers 134 and 136 may function as a cache for the webpage resources hosted by the one or more resource servers 132. In embodiments, one of the CDN servers (e.g., server 136) may have a faster network connection to a client devicePATENT Attorney Docket No. VS2623-WO-1 (e.g., mobile device 112), than to the one or more resource servers 132 so that the browser on the client device 112 can access the resources cached on the server 136 faster than would be possible by directly accessing the resources at the one or more resource servers 132. In embodiments, the CDN servers 134 and 136 may have improved connection speeds to a client device 112, 114, 116, and / or 118 over the one or more resource servers 132 due to being physically closer to the one or more client device 112, 114, 116, and / or 118, and / or due to using network paths and / or computing systems having greater capacities (e.g., more bandwidth, memory, and / or processing power) as compared to the network paths and / or computing systems utilized when the one or more client device 112, 114, 116, and / or 118 directly accesses resources at the one or more resource servers 132.
[0086] The one or more hinting servers 138 may generate and / or store hints for the one or more webpages and / or websites hosted by the one or more original hosting servers 110, which can be accessed by the web browsers of the client devices 112, 114, 116, 118. For example, the one or more hinting servers 138 may provide / host a hinting service that communicates hints to a web browser. The hinting service may include origin components configured to generate, manage, and store hints. The hinting service may include edge components deployed as distributed worker servers. These edge components may deliver hints to user devices 112, 114, 116, 118 with minimal latency, accessing the nearest data center for each user’ s location. The edge components may be edge servers distributed geographically. By hosting edge components close to end users, the hinting service may serve optimization hints in real time, adapting to specific conditions like network speed and device capabilities. By utilizing a cloud-based, multi-layered architecture, embodiments of the hinting service may combine centralized hint generation with distributed, low-latency hint delivery, which, in turn, may optimize performance across diverse geographic and / or technical environments.
[0087] Fig. 3 depicts an apparatus 300 for performing one or more of the methods disclosed herein, in accordance with embodiments of the current disclosure. Embodiments of the apparatus 300 may be implemented, in whole or in part, by and / or otherwise form part of the one or more original hosting servers 110, the one or more client devices 112, 114, 116, 118, the one or more resource servers 132, the one or more CDN servers 134, 136, the one or more hinting servers 138, the one or more other intermediate devices 140, and / or any other computing device disclosed herein. The apparatus 300 includes one or more processors 310 and / or one or more memory devices 312. The one or more memory devices 312 may store an application 314 that, when loaded into the one or more processors 310, cause the one or more processors 310 to perform one or more portions of the methods disclosed herein. While the one or more processors 310, one or more memory devices 312, and / or application 314 are shown as included in an apparatus 300, in embodiments, the one or morePATENT Attorney Docket No. VS2623-WO-1 processors 310, one or more memory devices 312, and / or application 314 may form a system for rendering webpages, as disclosed herein.
[0088] Fig. 4 depicts a block diagram of a system 400 for rendering a webpage, in accordance with embodiments of the current disclosure. The system 400 includes a web browser 410, a content server 412 (depicted as dashed box), and one or more resource origins 414 (e.g., servers that are the originating source of a resource).
[0089] The web browser 410 may operate on a client computing device 415 (e.g., 112, 114, 116, 118 (Fig. 1) and / or apparatus 300 (Fig. 3)) and be operated by a user 418, have a browser cache 420, and / or interact with a client-resident optimization module 422 (e.g., a service worker, an inline script, a browser extension, a programmatic agent, etc.).
[0090] The client-resident optimization module 422 may be an agent / service on the client computing device 415 that performs tasks and / or provides services to the browser 410. The client-resident optimization module 422 may have an associated server worker cache 424.
[0091] The content server 412 may include one or more CDN servers 426, an HTML origin server 428, one or more proxy servers, one or more hinting servers, and / or any other type of intermediate device (e.g., a server that assists a client device in viewing a webpage). While Fig. 4 depicts the content server 412 as including the HTML origin server 428, the HTML origin server 428 may, in embodiments, be disposed apart from the content server 412 (as represented by the dashed origins box 427).
[0092] The CDN server 426 may include a CDN proxy server 430, a CDN cache 432, and / or a dictionary 434 (e.g., a database that tracks resources stored in the CDN cache 432, maps webpage URLs to associated resources, pre-assigns priority levels to resources; and / or enables immediate resource identification without parsing HTML). In embodiments, the dictionary 434 may be precompiled prior to a given webpage request. As will be appreciated, a network node / device referred to herein as a “CDN” may, in embodiments, be any computing node (e.g., apparatus 300 (Fig. 3)) that is an intermediary to client systems and a webpage origin server 428, which may include a computing module 300 (Fig. 3) disposed in and / or with the webpage origin server 428.
[0093] Fig. 5 illustrates a method 500 for accelerating webpage rendering and / or loading of a webpage, in accordance with embodiments of the current disclosure. The method 500 may be performed via apparatus 300 (Fig. 3) (e.g., via the application 314 stored in the one or more memory devices 312 in combination with the one or more processors 310) and / or via any other computing device disclosed herein. For example, one or more portions of method 500 may be performed by the client computing device 415 (Fig. 4), CDN 426, and / or origin server 428.PATENT Attorney Docket No. VS2623-WO-1
[0094] The method 500 may include the following three phases: phase I - find slow / impactful blockers for the webpage 510; phase II - substitute URL 512; and phase III - serve webpage 514. As explained in greater detail herein, embodiments of phases I 510, II 512, and III 514 are structured to identify third-party resources, used by a webpage, whose storage on and fetching from a first-party server, (e.g., CDN cache 432, and / or HTML origin server 428 (Fig. 4)), improves the snappiness of the corresponding webpage, as rendered by a web browser 410 on a client computing device 415; and then alter an address value in a data file (e.g., a root HTML file for the webpage) used by the browser 410 to retrieve the resource when rendering the webpage. While the example embodiment of method 500 utilizes “slow blockers” (also referred to herein as “impactful blockers”), it will be understood that embodiments of the current disclosure may identify any type of blocking resource and / or any type of resource, as disclosed herein, as one whose storage on a first-party server improves the snappiness of the corresponding webpage. Nonlimiting examples of slow / impactful blockers include blocking resources that delay the rendering and / or loading of a webpage in a manner that would be understood by those skilled in the art, in view of the current disclosure, as having a meaningful impact on the user’s experience, and / or blocking resources having delays whose mitigation would significantly improve, as would be understood by those skilled in the art in view of the current disclosure, the loading and / or rendering of a webpage. For example, a slow / impactful blocker may be a blocker that results / causes a greater-than-or-equal-to one (1) second delay in loading and / or rendering a webpage. Further nonlimiting examples of slow / impactful blockers may include blockers that result in a greater delay and / or a greater impact on a user’s experience with a webpage as compared to other blockers for the webpage. In embodiments slow / impactful blockers may include blockers whose mitigation improves and / or optimizes the loading and / or rendering of a webpage.
[0095] As shown in Fig. 6, phase 1 510 may include measuring the impact of one or more resources on a webpage’s snappiness 610; determining that a third-party resource Y is a blocking resource responsible for impacting (e.g., slowing down) the webpage’s snappiness 612; and / or determining that the webpage’s snappiness could be improved by delivering / retrieving blocking resources Y from the first-party domain X for the webpage 614.
[0096] Measuring the impact of one or more resources on a webpage’s snappiness 610 may include measuring the impact of blocking resources on page speed for a page on domain “X”. An analysis of various resources may be performed to determine which resources contribute to the loading time of a webpage and identifying those that significantly slow down the overall performance. This analysis can be implemented using various techniques such as network monitoring tools, performance profiling, and real-time analytics.PATENT Attorney Docket No. VS2623-WO-1
[0097] Determining that a third-party resource Y is a blocking resource responsible for impacting (e.g., slowing down) the webpage’s snappiness 612 may build upon the data collected in the measuring process 610, using the data to identify specific third-party resources that are causing delays and / or blocking of events (e.g., blocking for rendering events such as a largest contentful paint event). The identification process may involve comparing the loading times of different resources, analyzing their dependencies, and evaluating their role in the page's functionality. The determining process 612 can be implemented using algorithms that assess the performance impact of each resource, and may utilize, in some embodiments, machine learning models to predict and identify problematic resources. The output of the determining process 612 may be a list of third-party resources that are candidates for optimization. In embodiments, the determining process 612 may be performed via one or more machine learning algorithms / methods, as disclosed herein.
[0098] Embodiments of method 500, and / or any other method disclosed herein, may determine / identify blocking resources via one or more machine learning algorithms / methods, as disclosed herein, and / or via one or more of the systems, methods, and / or apparatuses disclosed in U.S. Provisional Patent Application Serial No. 63,595,695, filed on November 2, 2023, and entitled “TUNING HINTS FOR IMPROVED WEB BROWSER PERFORMANCE” (Attorney Docket No.VS2466-US-1); International Patent Application No. PCT / US2024 / 054282, filed November 1, 2024, and entitled “SYSTEMS, METHODS, AND APPARATUSES FOR IDENTIFYING SIGNIFICANT WEBPAGE EVENTS AND TUNING WEB BROWSER HINTS” (Attorney Docket No. VS2466-WO-1); and International Patent Application No. PCT / US2025 / 027270, filed May 1, 2025, and entitled “SYSTEMS, METHODS, AND APPARATUSES FOR IDENTIFYING BLOCKING RESOURCES OF CONTENT-RECTANGLE-BASED WEBPAGE EVENTS AND TUNING WEB BROWSER HINTS” (Attorney Docket No. VS2620-WO-1).
[0099] One example of a third-party resource is a web font hosted by a service like Google Fonts or Adobe Fonts which may be hosted on a different domain than domain “X”. These fonts are often used to enhance the visual appeal of a website by providing a wide variety of typography options. However, because they are hosted externally, they can become blocking resources if the font files take too long to load, delaying the rendering of text on the webpage. This can negatively impact the user experience, especially on slower networks. Optimizing the delivery of these fonts, such as by preloading them or serving them from the first-party domain, can help mitigate these delays and improve page load performance.
[0100] Another example of a third-party resource may be a video file stored on a social media and / or videocasting platform / website that is embedded within a first-party webpage accessed by a client-computing device (e.g., a product sales webpage for flyfishing company A may havePATENT Attorney Docket No. VS2623-WO-1 embedded fly tying instructional videos stored on a server hosted by a flyfishing club / organization not affiliated with flyfishing company A). Embodiments of the current disclosure may determine that serving a specific video file (e.g., one over thirty-minutes) from a server on the first-party domain, as opposed to relaying on the client browser to fetch the video file from the third-party domain, improves the snappiness of the webpage when accessed and rendered by the client browser.
[0101] Determining that the webpage’s snappiness could be improved by delivering / retrieving blocking resource Y from the first-party domain X for the webpage 614 may involve a process that determines that these resources could be delivered more quickly via the first-party domain (domain X). This involves evaluating the feasibility and potential benefits of serving the identified resources from the first-party domain instead of relying on third-party servers. One significant advantage of this approach is that the HTTPS, HTTP / 2, or HTTP / 3 session to the first-party domain is typically established first during the webpage loading process. As a result, the overhead associated with establishing new connections is often avoided when resources are proxied through the first-party domain. This can lead to reduced latency and faster resource delivery, as the cost of setting up additional sessions with third-party domains is eliminated. The performance gains can vary depending on the protocol used (HTTPS, HTTP / 2, or HTTP / 3), as each has different session setup times and connection management characteristics. By leveraging the existing connection to the first-party domain, the system can enhance the efficiency of resource loading and improve overall page performance. This benefit extends even to resources that may not be cacheable in the Content Delivery Network (CDN) cache. For these non-cacheable resources, the system still provides a performance advantage by eliminating or reducing the session setup time over the last mile network, as the connection to the first-party domain has already been established. This approach ensures that third-party resources, whether cacheable or not, can benefit from the optimized delivery method across various HTTP protocols.
[0102] In embodiments, the process may include taking action to modify the webpage, enabling the third-party resource to be obtained via the first-party domain. The process may include altering the webpage's code to redirect requests for the identified third-party resource to a URL associated with the first-party domain. The modification can be achieved through various techniques, such as injecting scripts that dynamically rewrite URLs during the page load process, employing server-side middleware that intercepts and modifies outgoing requests, or by rerouting the resource requests through the first-party domain. Additionally, the system can leverage HTML updating capabilities typically available in CDNs to swap the URLs. This CDN-based approach allows for efficient and scalable modification of HTML content at the edge, enabling real-time URL substitution without requiring changes to the origin server.PATENT Attorney Docket No. VS2623-WO-1
[0103] Fig. 7 depicts three non-limiting example processes in phase II 512 for substituting I replacing the original URL of a third-party resource with a new URL that may result in a more efficient delivery of the resource, such as from a first-party domain. In the first nonlimiting example, the URL may be substituted via a manual update 710. For example, the website owner may directly modify the resource URLs in the website's code. In the second nonlimiting example, substitution of the URL may be implemented via dynamic replacement 712 (e.g., automation of the URL substitution process). The dynamic approach 712 can be implemented using scripts or middleware that intercept requests for third-party resources and redirect them to the optimized URL.Additionally, embodiments of the current disclosure can utilize HTML rewriting capabilities, typically available in CDNs, to perform URL substitution at the edge.
[0104] In the third nonlimiting example, substitution may include the use of a custom web browser 714 that can be used to facilitate the dynamic replacement of URLs. A custom web browser may be configured to automatically detect and substitute URLs of third-party resources with optimized URLs. The custom web browser can be configured to work in conjunction with other components, such as server-side scripts or middleware.
[0105] In certain embodiments, the substitution process involves embedding name-value pairs within the query string portion of the new URL. This approach facilitates the efficient replacement of URLs for third-party resources while maintaining a record of the original resource location.Specifically, the system generates new URLs where the query string contains key-value pairs that encode information about the original third-party URL. For example, a new URL might look like: "https: / / fi rstpartydomain.com / proxy '?original_url=https%3A%2F%2Fthirdparty.com%2Fresource.js &other_params= value". In this structure, the 'original_url' parameter in the query string contains the encoded original URL of the third-party resource. This method allows the system to track and manage the substitution process dynamically. When a request is made to the new URL, the system can extract the original URL from the query string, enabling it to fetch the resource from its original location if beneficial.
[0106] Fig. 8 shows aspects of serving a resource in accordance with phase III 514. For example, when a resource is requested via the first-party domain, the request may be managed by the CDN. Worker code within the CDN may be responsible for extracting the original URL from the namevalue pairs embedded in the new URL or performing a lookup of the substitution to identify the specific resource being requested. Once the original URL is determined, the worker code may check the CDN cache to ascertain whether the requested resource is already stored 810. If the resource is found in the cache, the resource can be served from the CDN cache 812. When the requested resource is not found in the CDN cache, the resource may be fetched / retrieved 814 from the third-PATENT Attorney Docket No. VS2623-WO-1 party origin server or another designated source. The process may involve establishing a connection with the third-party server, requesting the resource, and receiving the data. Once the resource is fetched / retrieved, the resource can be cached 816 and served 812.
[0107] As is to be appreciated, caching 816 of a newly fetched 814 resource in the CDN cache reduces the need to repeatedly fetch the resource from the third-party origin server. The caching process may include determining the appropriate storage location within the CDN infrastructure and managing the cache's storage capacity to accommodate new resources. This aspect may be implemented using caching algorithms that optimize the use of available storage.
[0108] In certain embodiments, the system may modify HTTP headers to make specific third-party resources cacheable and preloadable, thereby enhancing the efficiency of resource delivery. By altering the cache-control headers, the system can dictate caching policies that allow browsers to store and reuse resources, reducing the need to repeatedly fetch them from the server.
[0109] Fig. 9 illustrates a process flow for dynamically optimizing the loading of third-party resources. The example process includes operations involving a web server 910 (corresponding to HTML origin server 428 in Fig. 4, (e.g., a first-party domain)), a CDN 912 (corresponding to CDN 426 in Fig. 4, which may be within and / or associated with the first-party domain), a browser 914 (corresponding to browser 410 on client computing device 415 in Fig. 4), a JavaScript program 916, and one or more third-party servers 918 (corresponding to resource origins 414, (e.g., third-party domains)). The operations include the initial page load 920, where the web server 910 sends 922 HTML content to the browser 914. During transmission 922 of the HTML content by the web server 910, a script with URL mapping may be injected 924 into the HTML. The modified HTML is then sent 926 to the browser 914, which parses 928 it and executes 930 the injected script.
[0110] The execution 930 of the script initiates the URL interception process 932. The interception 932 may include operations for initializing 934 URL mapping and setting up 936 an interception for resource requests 938 generated during loading 940 of the resources by the browser 914. As the browser 914 attempts to load 940 resources, the interception process captures 942 these requests 938, replacing 944 the original URLs with proxied URLs. The proxied URLs are then returned 946 to the browser 914.
[0111] The browser 914 may then request 948 resources using the proxied URLs. If the CDN 912 has the requested resource cached, the CDN 912 sends 950 the cached resource back to the browser 914. If the resource is not cached at the CDN 912, the CDN 912 fetches 952 and 954 the resource from the third-party server 918, caches 956 the resource for future requests, and sends 958 the resource to the browser 914. The browser 914 then loads and renders 960 the resource. As is to be understood, this process may continue / repeat for other resources used by the webpage.PATENT Attorney Docket No. VS2623-WO-1
[0112] Fig. 10 depicts another method 1000 for accelerating webpage rendering and / or loading, in accordance with embodiments of the current disclosure. The method 1000 may be performed by via apparatus 300 (Fig. 3) (e.g., via the application 314 stored in the one or more memory devices 312 in combination with the one or more processors 310) and / or via any other computing device disclosed herein. For example, one or more portions of method 1000 may be performed by the client computing device 415 (Fig. 4), CDN 426, and / or origin server 428.
[0113] The method 1000 includes: identifying a resource used in a first visit to a webpage, where the webpage is hosted at a first-party domain 1010; determining that the resource has an address value structured to cause a client computing device to obtain the resource from a third-party domain 1012; and generating a computer-readable modification instruction that modifies the address value for the resource, where the modified address value is structured to cause the client computing device to obtain the resource from the first-party domain for a second visit to the webpage 1014.
[0114] Identifying the resource 1010 may involve inspection of a root HTML file for the webpage and identifying webpage components (e.g., images, sound files, data tables, and / or any other type of webpage resource) within the HTML. In embodiments, identifying the resource 1010 may be performed via RUM and / or may be performed via simulated and / or test visits to the webpage via a human or programmatically (e.g., a “bot”). In embodiments, a precompiled list of resources for the webpage may be supplied to one or more computing devices performing the method 1000.
[0115] The address value may be a URL, IP address (or other network address), variable name, and / or any other mechanism of identifying an access path for the resource. In embodiments, the address may include data that identifies the resource as being stored on a third-part server. For example, where the address value is a URL, the domain within the URL may be different than the first-party domain (e.g., a resource may have a URL of “baz.com / images / imgl.gif’, where “baz.com” is a third-party domain different from a first-party domain of the webpage of “foo.com”).
[0116] The computer-readable modification instruction may be a JavaScript, C# application / program, client-resident optimization module (e.g., 422 in Fig. 4), and / or any other suitable approach for modifying an address value within a data file (e.g., a root HTML file). The computer-readable modification instruction may be structured for execution by a CDN (e.g., CDN 426 in Fig. 4), by an origin server hosting the webpage (e.g., origin server 428 in Fig. 4), by a client computing device (e.g., client computing device 415 in Fig. 4) requesting the webpage, and / or any other computing device disclosed herein. The computer-readable modification instruction may be structured to replace, append, deleted, and / or alter one or more portions of the address value for the resource within the data file. For example, if the address value of a third-party resource “spritel.gif’ in an HTML root file for a requested webpage “foo.com” is “baz.com / spritel.gif’, the computer-PATENT Attorney Docket No. VS2623-WO-1 readable modification instruction may rewrite the address value to “foo.com / spritel.gif’. As is to be appreciated, modifying the domain portion of the address value for the “sprite.gif’ from “baz.com’’ to “foo.com” causes a client web browser requesting “foo.com” to fetch “spritel.gif” from a server at “foo.com”, as opposed to the original server of spritel.gif, “baz.com”.
[0117] In embodiments where a CDN modifies the address value, the modification may be performed in the HTML root file received from origin server, where the CDN passes the modified HTML root file onto the client computing device for rendering / loading via the client computing device’s browser. In embodiments where the origin server hosting the webpage modifies the address value, the modification may be performed on an existing copy of the root HTML file. In certain aspects, however, the origin server may generate the root HTML file dynamically with the modified address value used in place of the original address value of the resource. In embodiments where the client computing device modifies the address value, the client computing device’s browser may support sub-resource (SR) substitution, where the browser has access to data informing it of the location of the cached version of the resource and modifies the address value for the resource in the root HTML file to point to the cached location. In certain aspects, the browser may parse the root HTML file (having the original address value for the third-party resource) but have instructions (e.g., a lookup table) to fetch the resource from the cached location. In such embodiments, the browser may not actually modify the address value in the root HTML file, but those of skill in the art will readily understand, in view of this disclosure, that the effect (for purposes of fetching the resource to improve the webpage’s snappiness) is substantially the same as modifying the address value in the root HTML file.
[0118] In embodiments, a static modification of the address value (e.g., a change to a template used to generate the HTML root file) may be preferable at the origin HTML server (as compared to modifying the address value at a CDN and / or in the client computing device’s browser) when the modification is likely to be helpful to a plurality of client computing devices. Dynamic modification of the address value at the CDN and / or client computing device’ s browser may be preferable over a static modification of the address value at the origin HTML server when the modification is best tailored to individual client computing devices. However, in embodiments, dynamic modification of the address value at the CDN and / or in the client computing device’s browser may incur a delay over a static modification of the address value at the HTML origin server.
[0119] As shown in Fig. 11, in embodiments, the method 1000 may further include, in response to the computer-readable modification instruction, modifying, based at least in part on the computer-readable modification instruction, the address value for the resource to be structured to cause the client computing device to obtain the resource from the first-party domain for a second visit to thePATENT Attorney Docket No. VS2623-WO-1 webpage 1110. In embodiments, modifying the address value may involve modifying the address value in a data file for the webpage (e.g., the root file for the webpage). As disclosed herein, modifying the address value may be a manual update and / or an automated process. Modifying the address value 1110 may occur at a CDN (e.g., 426 in Fig. 4), at an origin server hosting the webpage (e.g., origin server 428 in Fig. 4), at a client computing device (e.g., client computing device 415 in Fig. 4) requesting the webpage, and / or any other computing device disclosed herein.
[0120] The method 1000 may also include identifying the resource as a blocking resource for the webpage 1112. The identification of resources 1112 may be performed on a first visit to the webpage by a client computing device, where the third-party resources may be fetched from the third-party domain but served from the first-party domain on subsequent visits to the webpage (by the same and / or different client computing devices). In embodiments, the identified blocking resources may be slow blockers, as disclosed herein. As is to be appreciated, identifying third-party blockers and / or third-party slow blockers, as opposed to identifying all third-party resources for a webpage, as candidates for being copied to a first-party domain storage device reduces the number of resources that must be tested to determine if copying the resource to the first-party storage device improves the webpage’s snappiness. Moreover, such an approach also reduces memory I storage requirements for the first-party domain which, in turn, frees up computing resources for other uses.
[0121] Identifying the resource as a blocking resource for the webpage may be based at least in part on one or more contextual variables associated with the client computing device requesting the webpage. Contextual variables may include data and / or properties that characterize and / or define the computing environment associated with the client computing device, first-party domain, and / or third-party domain. Nonlimiting examples of contextual variables include: physical locations of the client computing device, first-party domain systems (e.g., the HTML origin server), third-party domain systems (e.g., resource servers), and / or computing systems associated with the foregoing (e.g., fourth-party routers, gateways, and / or communication lines / paths); monetary costs associated with using a network path and / or accessing a server; bandwidth(s); network traffic prioritization(s); user tier level(s); country and / or regional statutes governing access to and / or use of computing devices; and / or the like. In embodiments, the one or more contextual variables may include: a first physical location of a server associated with the third-party domain; a second physical location of a client computing device requesting the webpage; a distance value that relates the first physical location to the second physical location; a network bandwidth; a time to obtain the resource from the third-party domain; and / or a monetary cost associated with obtaining the resource from the third-party domain. For example, the first-party domain and the third-party domain may be accessible to the client computing device over different connections. In such a scenario, the client computing device may bePATENT Attorney Docket No. VS2623-WO-1 physically closer to the third-party domain’ s system, as compared to the first-party domain’ s system, so that the client computing device is able to fetch a resource faster from the third-party domain than from the first-party domain. However, in a similar scenario, the client computing device’s network traffic may be deprioritized over the network connection to the third-party domain while prioritized on the network connection to the first-party domain such that the client computing device is able to fetch the resource faster from the first-party domain as compared to fetching it from the third-party domain.
[0122] By using contextual variables to selectively identify candidate resources for caching in a first-party location, embodiments of the current disclosure provide for an intelligent caching approach that reduces the amount of data (and / or other computing resources such as processing power) needed to improve a webpage’s snappiness (e.g., performance), as compared to traditional caching methods. Further, use of contextual variables to selectively identify candidate resources provides for the ability to customize the caching for individual client computing devices.
[0123] For example, the contextual variables associated with a first client computing device may be different from those associated with a second client computing device such that the set of third-party resources for a webpage results in different subsets of blocking resources for the two client computing devices. In such a scenario, the first client computing device may be physically located closer to the third-party domain server hosting resource X, as compared to the second client computing device. Accordingly, the first client computing device may be able to download resource X from the third-party domain server such that resource X is not considered a blocking resource (or a slow blocker); whereas the second client computing device may be unable to download resource X from the third-party domain server at speeds comparable to those achieved by the first client computing device. As such, resource X might be a third-party blocking resource for the second client computing device but not a third-party blocking resource for the first client computing device. Thus, as is to be appreciated, embodiments of the current disclosure may use contextual variables to determine / identify blocking resources on a per-client computing device basis and, in certain aspects, provide for a client computing device customized approach towards identifying and optimizing the fetching of third-party domain resources for a given webpage. As is to be further appreciated, such a customized approach is an improvement to the webpage rendering arts as it avoids the pitfall of treating / handling a third-party resource the same for two different client-computing devices, where the third-party resource may not be a blocking resource for one of the client computing devices while also being a blocking resource for another of the client computing device.
[0124] Identifying the blocking resources in method 1000, and / or any other method disclosed herein, may also be based at least in part on or more of the systems, methods, and / or apparatusesPATENT Attorney Docket No. VS2623-WO-1 disclosed in U.S. Provisional Patent Application Serial No. 63,595,695, filed on November 2, 2023, and entitled “TUNING HINTS FOR IMPROVED WEB BROWSER PERFORMANCE” (Attorney Docket No. VS2466-US-1); International Patent Application No. PCT / US2024 / 054282, filed November 1, 2024, and entitled “SYSTEMS, METHODS, AND APPARATUSES FOR IDENTIFYING SIGNIFICANT WEBPAGE EVENTS AND TUNING WEB BROWSER HINTS” (Attorney Docket No. VS2466-WO-1); and International Patent Application No.PCT / US2025 / 027270, filed May 1, 2025, and entitled “SYSTEMS, METHODS, AND APPARATUSES FOR IDENTIFYING BLOCKING RESOURCES OF CONTENT-RECTANGLE-BASED WEBPAGE EVENTS AND TUNING WEB BROWSER HINTS” (Attorney Docket No. VS2620-WO-1).
[0125] Identifying the blocking resources in method 1000, and / or any other method disclosed herein, may be based at least in part on a concurrency adjusted impact of the resource with respect to being stored on the third-party domain. For example, if a first resource is downloaded while twenty (20) other resources are also downloaded, then the impact of the first resource on the snappiness of the webpage should be divided by twenty (20). Conversely, if the same resource is downloaded while no other resources are being downloaded, then the resource’s impact on the webpage’s snappiness is significantly higher (as compared to the foregoing example where twenty (20) other resources are concurrently downloaded) and may be identified as a blocking resource and considered for caching in the first-party domain. In other words, resources that have a large impact on a webpage’s snappiness (as compared to other resources when adjusted for currency) are likely to be blocking resources whose caching on a first-party domain is likely to improve the webpage’s snappiness.
[0126] The method 1000 may include determining that the snappiness of the webpage can be improved by storing the resource on a memory device associated with the first-party domain 1114, obtaining / fetching the resource from the third-party server 1116, and storing the resource in a server associated with the first-party domain 1118.
[0127] In embodiments, determining whether the snappiness of the webpage can be improved by storing the resource on a memory device associated with the first-party domain 1114 may include performing one or more experiments and / or by analyzing RUM data. Embodiments of method 1000, and / or any other method disclosed herein, may determine whether storing / caching a third-party resource on a first-party domain improves a webpage’s snappiness via one or more machine learning algorithms / methods, as disclosed herein, and / or via one or more of the systems, methods, and / or apparatuses disclosed in U.S. Provisional Patent Application Serial No. 63,595,695, filed on November 2, 2023, and entitled “TUNING HINTS FOR IMPROVED WEB BROWSERPATENT Attorney Docket No. VS2623-WO-1 PERFORMANCE” (Attorney Docket No. VS2466-US-1); International Patent Application No. PCT / US2024 / 054282, filed November 1, 2024, and entitled “SYSTEMS, METHODS, AND APPARATUSES FOR IDENTIFYING SIGNIFICANT WEBPAGE EVENTS AND TUNING WEB BROWSER HINTS” (Attorney Docket No. VS2466-WO-1); and International Patent Application No. PCT / US 2025 / 027270, filed May 1, 2025, and entitled “SYSTEMS, METHODS, AND APPARATUSES FOR IDENTIFYING BLOCKING RESOURCES OF CONTENT-RECTANGLE-BASED WEBPAGE EVENTS AND TUNING WEB BROWSER HINTS” (Attorney Docket No.VS2620-WO-1). As will be appreciated, determining (e.g., testing) which candidate resources (e.g., those identified in process 1010) mitigates caching of resources on the first-party domain that do not improve the webpage’s snappiness and / or may reduce the webpage’s snappiness (e.g., scenarios where the client computing device has a faster network connection to the third-party domain than to the first-party domain).
[0128] The method 1000 may include obtaining the resource from the server associated with the first-party domain based at least in part on the modified address value 1120. For example, the client computing device may parse out the resource’s modified address value from the root html document, where the modified address value instructs the client computing device to fetch a cached copy of the resource from a first-party cache server. As is to be appreciated, it will often be the case in such scenarios that the client computing device can leverage one or more network connections already established between the client computing device and the first-party domain, as opposed to having to establish new network connections to one or more third-party domains. Thus, in certain aspects, embodiments of the current disclosure may improve a client computing device’s rending of a webpage by reducing the number of network connections that would otherwise be needed to retrieve the sought resource(s).
[0129] In certain aspects, the method 1000 further includes injecting the computer-readable modification instruction into a data file associated with the webpage. For example, in embodiments, the computer-readable modification instruction may be a JavaScript injected into the root HTML file that executes on a CDN and / or client computing device that, when executed, replaces the address value of the resource in the body of the webpage's HTML file.
[0130] In certain aspects, the computer-readable modification instruction may form part of a hint for the webpage stored on a hinting server (e.g., hinting server 138 in Fig. 1), and / or be executed by a client-resident optimization module (e.g., service worker 422 in Fig. 4). In embodiments, the hint may be injected at a CDN (e.g., CDN 426 in Fig. 4), at the client computing device (e.g., client computing device 415 in Fig. 4), and / or at other various locations as would be understood by those skilled in the art in view of this disclosure.PATENT Attorney Docket No. VS2623-WO-1
[0131] As will be understood by those skilled in the art in view of the current disclosure, embodiments of the method 1000, the corresponding apparatus 300 (Fig. 3), and / or any other computing device disclosed herein may incorporate one or more aspects of hinting and / or cache revalidation. As a nonlimiting example, in embodiments, aspects of the method 1000 may be performed by an intermediate device (e.g., 426 and / or any other type of intermediate device such as a CDN), as disclosed herein, where the intermediate device receives a request for a webpage from a client computing device (e.g., 112, 114, 116, and / or 118) and concurrently: 1 ) transmits a list of hints (e.g., early hints such as HTTP 103 early hints as per RFC 8297, and / or other hinting mechanisms for passing information to a browser and / or application for loading and / or rendering webpages) for the requested webpage, where the hints may include the modified address values for third-party resources, to the client computing device; and 2) stores (e.g., cache) a revalidation request corresponding to the modified address values. As will be appreciated, the intermediate device may obtain / fetch the third-party resource and store it in the first-party domain, as disclosed herein. In embodiments, the transmitted hints may be HTTP 103 early hints and / or any other type of hints, as disclosed herein.
[0132] In another nonlimiting example, the intermediate device (e.g., 426) may receive a request for a webpage from a client computing device (e.g., 112, 114, 116, and / or 118 and concurrently: 1) obtain a list of blocking resources from a domain object model; and 2) store (e.g., cache) a revalidation request corresponding to the modified address value in a memory device. The CDN may obtain / fetch the third-party resource and store it in the first-party domain, as disclosed herein. As will be appreciated, caching the revalidation request and / or caching the third-party resource in the first-party domain may, in embodiments, preemptively prepare the first-party cache and / or intermediate device for subsequent visits to the webpage.
[0133] Fig. 12 depicts another method 1200 for accelerating webpage rendering, in accordance with embodiments of the current disclosure. The method 1200 may be performed via apparatus 300 (Fig.3) (e.g., via the application 314 stored in the one or more memory devices 312 in combination with the one or more processors 310) and / or via any other computing device disclosed herein. For example, one or more portions of method 1200 may be performed by the client computing device 415 (Fig. 4) and / or CDN 426. The method 1200 includes obtaining a computer-readable modification instruction associated with a webpage, where the webpage is hosted by a first-party domain 1210; and modifying, based at least in part on the computer-readable modification instruction, an address value for a resource for the webpage, where the resource is associated with a third-party domain 1012.PATENT Attorney Docket No. VS2623-WO-1
[0134] In embodiments where the method 1200 is performed via a client computing device (e.g., client computing device 415 in Fig. 4), the computer-readable modification instruction may be obtained from a CDN (e.g., CDN 426 in Fig. 4) and / or from the webpage’s origin server (e.g., HTML origin 428 in Fig. 4). In such embodiments, the computer-readable modification instruction may be a JavaScript (or other suitable language) injected into the root HTML file for the webpage that executes when the client computing device's browser tries to load the webpage. In embodiments, the client modification instruction may be part of and / or performed by a clientresident optimization module (e.g., service worker 422 in Fig. 4), where the client-resident optimization module modifies the address values of identified third-party blocking resources in the root HTML document of the requested webpage during loading / rendering of the webpage by a browser on the client computing device.
[0135] Shown in Fig. 13 is yet another method 1300 for accelerating webpage rendering, in accordance with embodiments of the current disclosure. The method 1300 may be performed via apparatus 300 (Fig. 3) (e.g., via the application 314 stored in the one or more memory devices 312 in combination with the one or more processors 310) and / or via any other computing device disclosed herein. For example, one or more portions of method 500 may be performed by the client computing device 415 (Fig. 4), CDN 426, and / or origin server 428. In embodiments, method 1300 may be similar to method 1000 (Figs. 10-11) but includes a process for dynamically determining a storage location for caching a resource, as opposed to assuming the two storage options are the default third-party domain location / device and the first-party domain location / cache.
[0136] The method 1300 includes identifying a resource used in a first visit to a webpage, where the webpage is hosted at a first -party domain 1310; and determining that the resource has an address value structured to cause a client computing device to obtain the resource from a third-party domain 1312. The method further includes: determining a storage location for the resource that improves a snappiness of the webpage 1314; and generating a computer-readable modification instruction that modifies the address value for the resource, wherein the modified address value is structured to cause the client computing device to obtain the resource from the storage location for a second visit to the webpage 1316. In embodiments, the method 1300 may include storing the resource in the storage location prior to the second visit to the webpage 1318.
[0137] In embodiments, determining a storage location for the resource that improves a snappiness of the webpage 1314 may involve performing a series of experiments where an identifier third-party blocking resource is stored and fetched from a plurality of locations, where the fetches are timed and compared to determine which storage location results in the best snappiness (e.g., fastest loading and / or rending time) for the corresponding webpage, which may be accomplished via one or morePATENT Attorney Docket No. VS2623-WO-1 machine learning algorithms / methods. In certain aspects, the experiments may test storage locations outside of the first-party domain. For example, caching the resource in a fourth-party domain (e.g., a domain distinct from the first-party domain hosting the webpage and the third-party domain hosting the webpage’s resources) may improve the webpage’s snappiness more than caching the resource in a first-party domain server. Non-limiting examples of fourth-party domain storage locations include CDNs (and other types of resource servers), shared network storage systems, and / or the like. A fourth-party domain storage location may be optimal for caching third-party resources for a first-party webpage when the client computing device is physically located near the fourth-party domain storage location and / or has a more reliable and / or faster network connection to the fourth-party domain storage location.
[0138] As described herein, machine learning algorithms / models / methods may be trained using supervised learning or unsupervised learning. In supervised learning, a model is generated using a set of labeled examples, where each example has corresponding target label(s). In unsupervised learning, the model is generated using unlabeled examples. The collection of examples constructs a dataset, usually referred to as a training dataset. During training, a model is generated using this training data to learn the relationship between examples in the dataset. The training process may include various phases such as: data collection, preprocessing, feature extraction, model training, model evaluation, and model fine-tuning. The data collection phase may include collecting a representative dataset, typically from multiple users, that covers the range of possible scenarios and positions. The preprocessing phase may include cleaning and preparing the examples in the dataset and may include filtering, normalization, and segmentation. The feature extraction phase may include extracting relevant features from examples to capture relevant information for the task. The model training phase may include training a machine learning model on the preprocessed and feature-extracted data. Models may include support vector machines (SVMs), artificial neural networks (ANNs), decision trees, and the like for supervised learning, or autoencoders, Hopfield, restricted Boltzmann machine (RBM), deep belief, Generative Adversarial Networks (GAN), or other networks, or clustering for unsupervised learning. The model evaluation phase may include evaluating the performance of the trained model on a separate validation dataset to ensure that it generalizes well to new and unseen examples. The model fine-tuning may include refining a model by adjusting its parameters, changing the features used, or using a different machine-learning algorithm, based on the results of the evaluation. The process may be iterated until the performance of the model on the validation dataset is satisfactory and the trained model can then be used to make predictions.PATENT Attorney Docket No. VS2623-WO-1
[0139] In embodiments, trained models may be periodically fine-tuned for specific user groups, applications, and / or tasks. Fine-tuning of an existing model may improve the performance of the model for an application while avoiding completely retraining the model for the application.
[0140] In embodiments, fine-tuning a machine learning model may involve adjusting its hyperparameters or architecture to improve its performance for a particular user group or application. The process of fine-tuning may be performed after initial training and evaluation of the model, and it can involve one or more hyperparameter tuning and architectural methods.
[0141] Hyperparameter tuning includes adjusting the values of the model’s hyperparameters, such as learning rate, regularization strength, or the number of hidden units. This can be done using methods such as grid search, random search, or Bayesian optimization. Architecture modification may include modifying the structure of the model, such as adding or removing layers, changing the activation functions, or altering the connections between neurons, to improve its performance.
[0142] Online training of machine learning models includes a process of updating the model as new examples become available, allowing it to adapt to changes in the data distribution over time. In online training, the model is trained incrementally as new data becomes available, allowing it to adapt to changes in the data distribution over time. Online training can also be useful for user groups that have changing usage habits of the stimulation device, allowing the models to be updated in almost real-time.
[0143] In embodiments, online training may include adaptive filtering. In adaptive filtering, a machine learning model is trained online to learn the underlying structure of the new examples and remove noise or artifacts from the examples.
[0144] The methods (e.g., methods 500, 1000, 1200, and / or 1300) and systems described herein may be deployed in part or in whole through a machine having a computer, computing device, processor (e.g., processor 310 in Fig. 3), circuit, and / or server that executes computer-readable instructions (e.g., application(s) 314 in Fig. 4), program codes, instructions, and / or includes hardware configured to functionally execute one or more operations of the methods and systems disclosed herein. The terms computer, computing device, processor, circuit, and / or server, as utilized herein, should be understood broadly.
[0145] Any one or more of the terms computer, computing device, processor, circuit, and / or server include a computer of any type (e.g., apparatus 300 in Fig. 3), capable to access instructions stored in communication thereto such as upon a non-transient computer readable medium, whereupon the computer performs operations of systems or methods described herein upon executing the instructions. In certain embodiments, such instructions themselves include a computer, computing device, processor, circuit, and / or server. Additionally or alternatively, a computer, computingPATENT Attorney Docket No. VS2623-WO-1 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 such aspects as logical circuits, embedded circuits, sensors, actuators, input and / or output devices, network (e.g., network 120 in Fig.1) and / or communication resources, memory resources of any type, processing resources of any type, and / or hardware devices configured to be responsive to determined conditions to functionally execute one or more operations of systems and methods herein.
[0146] Network resources and / or communication resources include, without limitation, local area network, wide area network, wireless, internet, or any other known communication resources and protocols. Example and non-limiting hardware, computers, computing devices, processors, circuits, and / or servers include, without limitation, a general-purpose computer (e.g., apparatus 300 in Fig. 3), a server (e.g., servers 110, 132, 134, 136, 138 and / or 140), an embedded computer, a mobile device (e.g., device 112 in Fig. 1) , a virtual machine, and / or an emulated version of one or more of these. Example and non-limiting hardware, computers, computing devices, processors, circuits, and / or servers may be physical, logical, or virtual. A computer, computing device, processor, circuit, and / or server may be: a distributed resource included as an aspect of several devices; and / or included as an interoperable set of resources to perform described functions of the computer, computing device, processor, circuit, and / or server, such that the distributed resources function together to perform the operations of the computer, computing device, processor, circuit, and / or server. In certain 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 logically partitioned aspects of a set of executable instructions, with some aspects of the hardware device including a part of a first computer, computing device, processor, circuit, and / or server, and some aspects of the hardware device including a part of a second computer, computing device, processor, circuit, and / or server.
[0147] A computer, computing device, processor, circuit, and / or server may be part of a server, client, network infrastructure, mobile computing platform, stationary computing platform, or other computing platform. A processor (e.g., processor(s) 310 in Fig. 3) may be any kind of computational or processing device capable of executing program instructions, codes, binary instructions and the like. The processor may be or include a signal processor, digital processor, embedded processor, microprocessor or any variant such as a co-processor (math co-processor, graphic co-processor, communication co-processor and the like) and the like that may directly or indirectly facilitate execution of program code or program instructions stored thereon. In addition, the processor may enable execution of multiple programs, threads, and codes. The threads may be executedPATENT Attorney Docket No. VS2623-WO-1 simultaneously to enhance the performance of the processor and to facilitate simultaneous operations of the application. By way of implementation, methods, program codes, program instructions and the like described herein may be implemented in one or more threads. The thread may spawn other threads that may have assigned priorities associated with them; the processor may execute these threads based on priority or any other order based on instructions provided in the program code. The processor may include memory that stores methods, codes, instructions and programs as described herein and elsewhere. The processor may access a storage medium through an interface that may store methods, codes, and instructions as described herein and elsewhere. The storage medium associated with the processor for storing methods, programs, codes, program instructions or other type of instructions capable of being executed by the computing or processing device may include but may not be limited to one or more of a CD-ROM, DVD, memory, hard disk, flash drive, RAM, ROM, cache and the like.
[0148] A processor may include one or more cores that may enhance speed and performance of a multiprocessor. In embodiments, the process may be a dual core processor, quad core processors, other chip-level multiprocessor and the like that combine two or more independent cores (called a die).
[0149] The methods (e.g., methods 500, 1000, 1200, and / or 1300) and systems described herein may be deployed in part or in whole through a machine that executes computer-readable instructions on a server, client, firewall, gateway, hub, router, or other such computer and / or networking hardware. The computer readable instructions may be associated with a server (e.g., servers 110, 132, 134, 136, 138, and / or 140) that may include a file server, print server, domain server, internet server, intranet server and other variants such as secondary server, host server, distributed server and the like. The server may include one or more of memories, processors, computer readable transitory and / or non-transitory media, storage media, ports (physical and virtual), communication devices, and interfaces capable of accessing other servers, clients, machines, and devices through a wired or a wireless medium, and the like. The methods, programs, or codes as described herein and elsewhere may be executed by the server. In addition, other devices required for execution of methods as described in this application may be considered as a part of the infrastructure associated with the server.
[0150] The server (e.g., servers 110, 132, 134, 136, 138, and / or 140) may provide an interface to other devices including, without limitation, clients, other servers, printers, database servers, print servers, file servers, communication servers, distributed servers, and the like. Additionally, this coupling and / or connection may facilitate remote execution of instructions across the network. The networking of some or all of these devices may facilitate parallel processing of program code,PATENT Attorney Docket No. VS2623-WO-1 instructions, and / or programs at one or more locations without deviating from the scope of the disclosure. In addition, all the devices attached to the server through an interface may include at least one storage medium capable of storing methods, program code, instructions, and / or programs. A central repository may provide program instructions to be executed on different devices. In this implementation, the remote repository may act as a storage medium for methods, program code, instructions, and / or programs.
[0151] The methods (e.g., methods 500, 1000, 1200, and / or 1300), program code, instructions, and / or programs may be associated with a client that may include a file client, print client, domain client, internet client, intranet client and other variants such as secondary client, host client, distributed client and the like. The client may include one or more of memories, processors, computer readable transitory and / or non-transitory media, storage media, ports (physical and virtual), communication devices, and interfaces capable of accessing other clients, servers, machines, and devices through a wired or a wireless medium, and the like. The methods, program code, instructions, and / or programs as described herein and elsewhere may be executed by the client. In addition, other devices utilized for execution of methods as described in this application may be considered as a part of the infrastructure associated with the client.
[0152] The client may provide an interface to other devices including, without limitation, servers, other clients, printers, database servers, print servers, file servers, communication servers, distributed servers, and the like. Additionally, this coupling and / or connection may facilitate remote execution of methods, program code, instructions, and / or programs across the network. The networking of some or all of these devices may facilitate parallel processing of methods, program code, instructions, and / or programs at one or more locations without deviating from the scope of the disclosure. In addition, all the devices attached to the client through an interface may include at least one storage medium capable of storing methods, program code, instructions, and / or programs. A central repository may provide program instructions to be executed on different devices. In this implementation, the remote repository may act as a storage medium for methods, program code, instructions, and / or programs.
[0153] The methods (e.g., methods 500, 1000, 1200, and / or 1300) and systems described herein may be deployed in part or in whole through network infrastructures. The network infrastructure may include elements such as computing devices, servers (e.g., servers 110, 132, 134, 136, 138, and / or 140), routers, hubs, firewalls, clients, personal computers, communication devices, routing devices and other active and passive devices, modules, and / or components as known in the art. The computing and / or non-computing device(s) associated with the network infrastructure may include, apart from other components, a storage medium such as flash memory, buffer, stack, RAM, ROMPATENT Attorney Docket No. VS2623-WO-1 and the like. The methods, program code, instructions, and / or programs described herein and elsewhere may be executed by one or more of the network infrastructural elements.
[0154] The methods (e.g., methods 500, 1000, 1200, and / or 1300), program code, instructions, and / or programs described herein and elsewhere may be implemented on a cellular network having multiple cells. The cellular network may either be frequency division multiple access (FDMA) network or code division multiple access (CDMA) network. The cellular network may include mobile devices, cell sites, base starions, repeaters, antennas, towers, and the like.
[0155] The methods (e.g., methods 500, 1000, 1200, and / or 1300), program code, instructions, and / or programs described herein and elsewhere may be implemented on or through mobile devices. The mobile devices may include navigation devices, cell phones, mobile phones, mobile personal digital assistants, laptops, palmtops, netbooks, pagers, electronic books readers, music players, and the like. These mobile devices may include, apart from other components, a storage medium such as a flash memory, buffer, RAM, ROM and one or more computing devices. The computing devices associated with mobile devices may be enabled to execute methods, program code, instructions, and / or programs stored thereon. Alternatively, the mobile devices may be configured to execute instructions in collaboration with other devices. The mobile devices may communicate with base stations interfaced with servers and configured to execute methods, program code, instructions, and / or programs. The mobile devices may communicate on a peer to peer network, mesh network, or other communications network. The methods, program code, instructions, and / or programs may be stored on the storage medium associated with the server and executed by a computing device embedded within the server. The base station may include a computing device and a storage medium. The storage device may store methods, program code, instructions, and / or programs executed by the computing devices associated with the base station.
[0156] The methods (e.g., methods 500, 1000, 1200, and / or 1300), program code, instructions, and / or programs may be stored and / or accessed on machine readable transitory and / or non-transitory media that may include: computer components, devices, and recording media that retain digital data used for computing for some interval of time; semiconductor storage known as random access memory (RAM); mass storage typically for more permanent storage, such as optical discs, forms of magnetic storage like hard disks, tapes, drums, cards and other types; processor registers, cache memory, volatile memory, non-volatile memory; optical storage such as CD, DVD; removable media such as flash memory (e.g., USB sticks or keys), floppy disks, magnetic tape, paper tape, punch cards, standalone RAM disks, Zip drives, removable mass storage, off-line, and the like; other computer memory such as dynamic memory, static memory, read / write storage, mutable storage,PATENT Attorney Docket No. VS2623-WO-1 read only, random access, sequential access, location addressable, file addressable, content addressable, network attached storage, storage area network, bar codes, magnetic ink, and the like.
[0157] Certain operations described herein include interpreting, receiving, and / or determining one or more values, parameters, inputs, data, or other information. Operations including interpreting, receiving, and / or determining any value parameter, input, data, and / or other information include, without limitation: receiving data via a user input: receiving data over a network of any type; reading a data value from a memory location in communication with the receiving device; utilizing a default value as a received data value; estimating, calculating, or deriving a data value based on other information available to the receiving device; and / or updating any of these in response to a later received data value. In certain embodiments, a data value may be received by a first operation, and later updated by a second operation, as part of the receiving a data value. For example, when communications are down, intermittent, or interrupted, a first operation to interpret, receive, and / or determine a data value may be performed, and when communications are restored an updated operation to interpret, receive, and / or determine the data value may be performed.
[0158] Certain logical groupings of operations herein, for example methods or procedures of the current disclosure, are provided to illustrate aspects of the present disclosure. 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 is understood that the context of an operational description may require an ordering for one or more operations, and / or an order for one or more operations may be explicitly disclosed, but the order of operations should be understood broadly, where any equivalent grouping of operations to provide an equivalent outcome of operations is specifically contemplated herein. For example, if a value is used in one operational step, the determining of the value may be required before that operational step in certain contexts (e.g. where the time delay of data for an operation to achieve a certain effect is important), but may not be required before that operation step in other contexts (e.g. where usage of the value from a previous execution cycle of the operations would be sufficient for those purposes). Accordingly, in certain embodiments an order of operations and grouping of operations as described is explicitly contemplated herein, and in certain embodiments re-ordering, subdivision, and / or different grouping of operations is explicitly contemplated herein.
[0159] The methods (e.g., methods 500, 1000, 1200, and / or 1300) and systems described herein may transform physical and / or intangible items from one state to another. The methods and systems described herein may also transform data representing physical and / or intangible items from one state to another.PATENT Attorney Docket No. VS2623-WO-1
[0160] The elements described and depicted herein, including in flow charts, block diagrams, and / or operational descriptions, depict and / or describe specific example arrangements of elements for purposes of illustration. However, the depicted and / or described elements, the functions thereof, and / or arrangements of these, may be implemented on machines, such as through computer executable transitory and / or non-transitory media having a processor capable of executing program instructions stored thereon, and / or as logical circuits or hardware arrangements. Example arrangements of programming instructions include at least: monolithic structure of instructions; standalone modules of instructions for elements or portions thereof; and / or as modules of instructions that employ external routines, code, services, and so forth; and / or any combination of these, and all such implementations are contemplated to be within the scope of embodiments of the present disclosure Examples of such machines include, without limitation, personal digital assistants, laptops, personal computers, mobile phones, other handheld computing devices, medical equipment, wired or wireless communication devices, transducers, chips, calculators, satellites, tablet PCs, electronic books, gadgets, electronic devices, devices having artificial intelligence, computing devices, networking equipment, servers, routers and the like. Furthermore, the elements described and / or depicted herein, and / or any other logical components, may be implemented on a machine capable of executing program instructions. Thus, while the foregoing flow charts, block diagrams, and / or operational descriptions set forth functional aspects of the disclosed systems, any arrangement of program instructions implementing these functional aspects are contemplated herein. Similarly, it will be appreciated that the various steps identified and described above may be varied, and that the order of steps may be adapted to particular applications of the techniques disclosed herein.Additionally, any steps or operations may be divided and / or combined in any manner providing similar functionality to the described operations. All such variations and modifications are contemplated in the present disclosure. The methods and / or processes described above, and steps thereof, 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 a dedicated computing device or specific computing device, a particular aspect or component of a specific computing device, and / or an arrangement of hardware components and / or logical circuits to perform one or more of the operations of a method and / or system. The processes may be implemented in one or more microprocessors, microcontrollers, embedded microcontrollers, programmable digital signal processors or other programmable device, along with internal and / or external memory. The processes may also, or instead, be embodied in an application specific integrated circuit, a programmable gate array, programmable array logic, or any other device or combination of devices that may bePATENT Attorney Docket No. VS2623-WO-1 configured to process electronic signals. It will further be appreciated that one or more of the processes may be realized as a computer executable code capable of being executed on a machine-readable medium.
[0161] The computer executable code (e.g., application(s) 314 in Fig. 3) may be created using a structured programming language such as C, an object oriented programming language such as C++, or any other high-level or low-level programming language (including assembly languages, hardware description languages, and database programming languages and technologies) that may be stored, compiled or interpreted to run on one of the above devices, as well as heterogeneous combinations of processors, processor architectures, or combinations of different hardware and computer readable instructions, or any other machine capable of executing program instructions.
[0162] Thus, in one aspect, each method described above and combinations thereof may be embodied in computer executable code that, when executing on one or more computing devices, performs the steps thereof. In another aspect, the methods may be embodied in systems that perform the steps thereof, and may be distributed across devices in a number of ways, or all of the functionality may be integrated into a dedicated, standalone device or other hardware. In another aspect, the 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 the present disclosure.
[0163] As is to be further appreciated, embodiments of the current disclosure are useful in scenarios where a third-party resource for a requested webpage is of a large size (relative to the average size of webpage resources) where a requesting client computing device is located closer to a first-party domain system than to the third-party domain system hosting the third-party resource. By identifying the third-party resource, determining that the corresponding webpage’s snappiness can be improved by caching the third-party resource on a first-party domain system, embodiments of the current disclosure improve the ability of client computing devices to render and / or load webpages.
[0164] Thus, as is to also be appreciated, the methods and systems described herein offer significant benefits in enhancing web application performance. By optimizing the loading and rendering of third-party resources, the methods and systems provide faster load times and a more responsive user experience. The system intelligently prioritizes resources, reducing bandwidth consumption such that content is loaded promptly. Moreover, embodiments described herein contribute to reduced latency by caching and optimizing third-party resources, allowing for quicker access to data and resources and reducing bandwidth usage. Further, by storing a resource in locations away from the third-party domain originally hosting the resource, embodiments of the current disclosure provide for a browser to render a webpage when the third-party server is unavailable to the browser.PATENT Attorney Docket No. VS2623-WO-1
[0165] While the disclosure has been disclosed in connection with the preferred embodiments shown and described in detail, various modifications and improvements thereon will become readily apparent to those skilled in the art. Accordingly, the spirit and scope of the present disclosure is not to be limited by the foregoing examples, but is to be understood in the broadest sense allowable by law.
Claims
1. PATENT Attorney Docket No. VS2623-WO-1 CLAIMSWhat is Claimed is:
1. A method for accelerating webpage rendering, the method comprising:identifying a resource used in a first visit to a webpage, wherein the webpage is hosted at a first-party domain;determining that the resource has an address value structured to cause a client computing device to obtain the resource from a third-party domain; andgenerating a computer-readable modification instruction that modifies the address value for the resource, wherein the modified address value is structured to cause the client computing device to obtain the resource from the first-party domain for a second visit to the webpage.
2. The method of claim 1 further comprising:in response to the computer-readable modification instruction, modifying, based at least in part on the computer-readable modification instruction, the address value for the resource to be structured to cause the client computing device to obtain the resource from the first -party domain for a second visit to the webpage.
3. The method of claim 2, wherein modifying the address value comprises:modifying the address value in a data file for the webpage.
4. The method of claim 3, wherein the data file is a root file for the webpage.
5. The method of any of claims 2-3, wherein modifying the address value occurs at the client computing device.
6. The method of any of claims 2-5, wherein modifying the address value occurs at an intermediate device.
7. The method of any of claims 6, wherein modifying the address value occurs at a Content Delivery Network (CDN) server.
8. The method of any of claims 2-7, wherein modifying the address value occurs at an origin server for the webpage.
9. The method of any of claims 1-8, wherein the address value is a URL.
10. The method of any of claims 1-9 further comprising:identifying the resource as a blocking resource for the webpage.PATENT Attorney Docket No. VS2623-WO-1 11. The method of claim 10, wherein identifying the resource as a blocking resource for the webpage is based at least in part on one or more contextual variables associated with the client computing device requesting the webpage.
12. The method of claim 11, wherein the one or more contextual variables include at least one of: a first physical location of a server associated with the third-party domain;a second physical location of a client computing device requesting the webpage; or a distance value that relates the first physical location to the second physical location.
13. The method of claim 11, wherein the one or more contextual variables include at least one of: a network bandwidth;a time to obtain the resource from the third-party domain; ora monetary cost associated with obtaining the resource from the third-party domain.
14. The method of any of claims 1-13 further comprising:obtaining the resource from a server associated with the first-party domain based at least in part on the modified address value.
15. The method of claim 14 further comprising:obtaining the resource from a server associated with the third-party domain; andstoring the resource in a server associated with the first-party domain.
16. The method of any of claims 1-15 further comprising:injecting the computer-readable modification instruction into a data file associated with the webpage.
17. The method of any of claims 1-16, wherein the computer- readable modification instruction forms part of a hint for the webpage.
18. The method of any of claims 1-17, wherein the computer-readable modification instruction forms part of a client-resident optimization module.
19. The method of any of claims 1-18. wherein the first-party domain and the third-party domain are accessible to the client computing device over different connections.
20. An apparatus for accelerating webpage rendering, the apparatus comprising:at least one processor; andat least one memory device that stores computer-readable instructions that, when loaded into the at least one processor, cause the at least one processor to:identify a resource used in a first visit to a webpage, wherein the webpage is hosted at a first-party domain;PATENT Attorney Docket No. VS2623-WO-1 determine that the resource has an address value structured to cause a client computing device to obtain the resource from a third-party domain; andgenerate a computer-readable modification instruction that modifies the address value for the resource, wherein the modified address value is structured to cause the client computing device to obtain the resource from the first-party domain for a second visit to the webpage.
21. The apparatus of claim 20, wherein the computer-readable instructions further cause the at least one processor to:in response to the computer-readable modification instruction, modify, based at least in part on the computer-readable modification instruction, the address value for the resource to be structured to cause the client computing device to obtain the resource from the first-party domain for a second visit to the webpage.
22. The apparatus of any of claims 20-21, wherein the address value forms part of a data file for the webpage.
23. The apparatus of claim 22, wherein the data file is a root file for the webpage.
24. The apparatus of claim 21, wherein at least a portion of the at least one processor that modifies the address value forms part of the client computing device.
25. The apparatus of claim 21, wherein at least a portion of the at least one processor that modifies the address value forms part of an intermediate device.
26. The apparatus of claim 25, wherein the intermediate device is a Content Delivery Network (CDN) server.
27. The apparatus of claim 21, wherein at least a portion of the at least one processor that modifies the address value forms part of an origin server for the webpage.
28. The apparatus of any of claims 20-27, wherein the address value is a URL.
29. The apparatus of any of claims 20-28, wherein the computer-readable instructions further cause the at least one processor to:identify the resource as a blocking resource for the webpage.
30. The apparatus of any of claims 20-29, wherein the resource is identified as a blocking resource for the webpage based at least in part on one or more contextual variables associated with the client computing device requesting the webpage.
31. The apparatus of claim 30, wherein the one or more contextual variables includes at least one of:PATENT Attorney Docket No. VS2623-WO-1 a first physical location of a server associated with the third-party domain;a second physical location of a client computing device requesting the webpage; or a distance value that relates the first physical location to the second physical location.
32. The apparatus of claim 30, wherein the one or more contextual variables include at least one of:a network bandwidth;a time to obtain the resource from the third-party domain; ora monetary cost associated with obtaining the resource from the third-party domain.
33. The apparatus of any of claims 20-32, wherein the computer-readable instructions further cause the at least one processor to:obtain the resource from a server associated with the first-party domain based at least in part on the modified address value.
34. The apparatus of any of claims 20-33, wherein the computer-readable instructions further cause the at least one processor to:obtain the resource from a server associated with the third-party domain; andstore the resource on a server associated with the first-party domain.
35. The apparatus of any of claims 20-34, wherein the computer-readable instructions further cause the at least one processor to:inject the computer-readable modification instruction into a data file associated with the webpage.
36. The apparatus of any of claims 20-35, wherein the computer-readable modification instruction forms part of a hint for the webpage.
37. The apparatus of any of claims 20-36, wherein the computer-readable modification instruction is structured to be executed by a client-resident optimization module.
38. The apparatus of any of claims 20-37, wherein the first-party domain and the third-party domain are accessible to the client computing device over different connections.
39. A method for accelerating webpage rendering, the method comprising:obtaining a computer-readable modification instruction associated with a webpage, wherein the webpage is hosted by a first-party domain; andmodifying, based at least in part on the computer-readable modification instruction, an address value for a resource for the webpage, wherein the resource is associated with a third-party domain.
40. The method of claim 39, wherein modifying the address value comprises:modifying the address value in a data file for the webpage.PATENT Attorney Docket No. VS2623-WO-1 41. The method of claim 40, wherein the data file is a root file for the webpage.
42. The method of any of claims 39-41 , wherein the address value is a URL.
43. The method of any of claims 39-42 further comprising:identifying the resource as a blocking resource for the webpage.
44. The method of claim 43, wherein identifying the resource as a blocking resource for the webpage is based at least in part on one or more contextual variables associated with a client computing device requesting the webpage.
45. The method of claim 44, wherein the one or more contextual variables include:a first physical location of a server associated with the third-party domain;a second physical location of a client computing device requesting the webpage; or a distance value that relates the first physical location to the second physical location.
46. The method of claim 44, wherein the one or more contextual variables include at least one of: a network bandwidth;a time to obtain the resource from the third-party domain; ora monetary cost associated with obtaining the resource from the third-party domain.
47. The method of any of claims 39-46 further comprising:obtaining the resource from a server associated with the first-party domain based at least in part on the modified address value.
48. The method of any of claims 39-47 further comprising:injecting the computer-readable modification instruction into a data file associated with the webpage.
49. The method of any of claims 39-48, wherein the computer-readable modification instruction is executed by a client-resident optimization module.
50. The method of any of claims 39-48 further comprising:receiving a request for a webpage from a client computing device;transmitting one or more hints to the client computing device, wherein the one or more hints correspond to the webpage, wherein the one or more hints includes the modified address value for the resource for the webpage;concurrently with transmitting the one or more hints to the client computing device, storing a revalidation request corresponding to the modified address value in a memory device;fetching the resource for the webpage from the third-party domain; andstoring the fetched resource in a memory device associated with a first-party domain.PATENT Attorney Docket No. VS2623-WO-1 51. The method of any of claim 39-48 further comprising:receiving a request for a webpage from a client computing device;obtaining a list of blocking resources from a domain object model;concurrently with obtaining the list of blocking resources, storing a revalidation request corresponding to the modified address value in a memory device;fetching the resource for the webpage from the third-party domain; andstoring the fetched resource in a memory device associated with a first-party domain.
52. An apparatus for accelerating webpage rendering, the apparatus comprising:at least one processor; andat least one memory device that stores computer-readable instructions, when loaded into the at least one processor, cause the at least one processor to:obtain a computer-readable modification instruction associated with a webpage, wherein the webpage is hosted by a first-party domain; andmodify, based at least in part on the computer-readable modification instruction, an address value for a resource for the webpage, wherein the resource is associated with a third- party domain.
53. The apparatus of claim 52, wherein the address value forms part of a data file for the webpage.
54. The apparatus of claim 53, wherein the data file is a root file for the webpage.
55. The apparatus of any of claims 52-54, wherein the address value is a URL.
56. The apparatus of any of claims 52-55, wherein the computer-readable instructions further cause the at least one processor to:identify the resource as a blocking resource for the webpage.
57. The apparatus of claim 56, wherein the resource is identified as a blocking resource for the webpage based at least in part on one or more contextual variables associated with a client computing device requesting the webpage.
58. The apparatus of claim 57, wherein the one or more contextual variables include:a first physical location of a server associated with the third-party domain;a second physical location of a client computing device requesting the webpage; or a distance value that relates the first physical location to the second physical location.
59. The apparatus of claim 57, wherein the one or more contextual variables include at least one of:a network bandwidth;a time to obtain the resource from the third-party domain; ora monetary cost associated with obtaining the resource from the third-party domain.PATENT Attorney Docket No. VS2623-WO-1 60. The apparatus of any of claims 52-59, wherein the computer-readable instructions further cause the at least one processor to:obtain the resource from a server associated with the first-party domain based at least in part on the modified address value.
61. The apparatus of any of claims 52-60, wherein the computer-readable instructions further cause the at least one processor to:inject the computer-readable modification instruction into a data file associated with the webpage.
62. The apparatus of any of claims 52-61, wherein the computer-readable modification instruction is structured to be executed by a client-resident optimization module.
63. A method for accelerating webpage rendering, the method comprising:identifying a resource used in a first visit to a webpage, wherein the webpage is hosted at a first-party domain;determining that the resource has an address value structured to cause a client computing device to obtain the resource from a third-party domain;determining a storage location for the resource that improves a snappiness of the webpage; andgenerating a computer-readable modification instruction that modifies the address value for the resource, wherein the modified address value is structured to cause the client computing device to obtain the resource from the storage location for a second visit to the webpage.
64. The method of claim 63 further comprising:storing the resource in the storage location prior to the second visit to the webpage.
65. An apparatus for accelerating webpage rendering, the apparatus comprising:at least one processor; andat least one memory device that stores computer-readable instructions that, when loaded into the at least one processor, cause the at least one processor to:identify a resource used in a first visit to a webpage, wherein the webpage is hosted at a first-party domain;determine that the resource has an address value structured to cause a client computing device to obtain the resource from a third-party domain;determine a storage location for the resource that improves a snappiness of the webpage; andgenerate a computer-readable modification instruction that modifies the address value for the resource, wherein the modified address value is structured to cause the client computing device to obtain the resource from the storage location for a second visit to the webpage.PATENT Attorney Docket No. VS2623-WO-1 66. The apparatus of claim 65, wherein the computer-readable instructions further cause the at least one processor to:store the resource in the storage location prior to the second visit to the webpage.