US8886769B2 - Selective content pre-warming in content delivery networks based on user actions and content categorizations - Google Patents
Selective content pre-warming in content delivery networks based on user actions and content categorizations Download PDFInfo
- Publication number
- US8886769B2 US8886769B2 US13/744,834 US201313744834A US8886769B2 US 8886769 B2 US8886769 B2 US 8886769B2 US 201313744834 A US201313744834 A US 201313744834A US 8886769 B2 US8886769 B2 US 8886769B2
- Authority
- US
- United States
- Prior art keywords
- content
- content object
- request
- end user
- objects
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012802 pre-warming Methods 0.000 title description 5
- 238000000034 method Methods 0.000 claims abstract description 45
- 230000004044 response Effects 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 49
- 230000015654 memory Effects 0.000 claims description 27
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims 2
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 9
- 238000009826 distribution Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000000875 corresponding effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012913 prioritisation Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5681—Pre-fetching or pre-delivering data based on network characteristics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/612—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- H04L65/4084—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/762—Media network packet handling at the source
-
- H04L67/2847—
Definitions
- This disclosure relates in general to identifying content to pre-cache in content delivery networks (CDNs). Specifically, user actions are monitored and/or content is categorized in order to predict which content objects will be accessed at specific geographic locations, making such objects suitable for pre-caching.
- CDNs content delivery networks
- the present disclosure provides a method and system for automatically identifying content and content portions for pre-caching at specific geographic locations in content delivery networks (CDNs) by analyzing users' actions and content categorizations.
- User requests for content objects are tracked in a geographically sensitive manner.
- Content objects are then aggregated based on categorizations of the objects (e.g., using metadata names or tags). Based on this analysis, a prediction is made as to how content-object classifications influence overall request probability, sequential request probability (e.g., whether a content object was requested prior to requesting other similar objects), and access behaviors (e.g., whether a content object was viewed in its entirety). The prediction is further made in a geographically sensitive manner.
- select content objects e.g., likely to be accessed or likely to be first accessed by users
- pre-cached in full or in part e.g., based on an access-behavior prediction
- the object can be served.
- a prediction can further be made as to which content object or part of a content object will be requested or desired by the user, and the content object or part of the content object can be retrieved (e.g., and cached).
- the present disclosure provides a method and system for automatically identifying content and content portions for pre-caching at specific geographic locations in content delivery networks (CDNs) based on content-group structures, such as playlists.
- Content-group structures can identify a set of ordered content objects.
- a user can access a content-group structure, and—in a default mode—the content objects in the set are provided to the user sequentially as ordered in the structure.
- a prediction is made as to which content objects a user will expect to be initially and quickly provided. This prediction is further made in a geographically sensitive manner based on where, within a CDN, the user associated with the structure is estimated to be.
- select content objects e.g., likely to be accessed or likely to be first accessed by the user or a set of users
- select content objects are identified and pre-cached in full or in part at specific geographic locations in the CDN.
- the object can be served.
- a prediction can further be made as to which content object or part of a content object will be subsequently requested or desired, and the content object or part of the content object can be retrieved (e.g., and cached).
- a content delivery network for streaming content over the Internet to an end user system.
- a content request interface receives requests for streaming content objects to end user systems.
- An edge server selection function assigns each request to an edge server for streaming content to the end user system.
- a streaming function streams the requested streaming content object to the requesting end user systems.
- a content-request function tracks the requests for the streaming content objects to identify, for each request received by the content request interface, a first content object being requested. The content-request function further identifies, for each request received by the content request interface, a category of the requested first content object and stores the identified category.
- the content-request function also generates aggregated data indicating an amount of requests being for content objects with a specific category, predicts that a second content object will be requested in the future based on the aggregated data and based on a category of the second content object, and causes access to the second content object to be improved such that the second content object is set to be provided faster in response to a request for the second content object than would otherwise occur.
- a method for streaming content over the Internet via a CDN to an end user system.
- Requests from end user systems for streaming content objects being handled by the CDN are tracked to identify, for each request the tracked requests, a first content object being requested.
- a category of the requested first content object is identified.
- the identified category is stored.
- Aggregated data indicating an amount of requests being for content objects with a specific category is generated.
- a prediction is made that a second content object will be requested, via the CDN, in the future based on the aggregated data and based on a category of the second content object.
- Access to the second content object is caused to be improved such that the second content object is set to be provided faster in response to a request for the second content object than would otherwise occur.
- a system for streaming content over the Internet to an end user system includes one or more processors and one or memories coupled with said one or more processors.
- the one or more processors and one or more memories are configured to track requests from end user systems for streaming content to identify, for each request the tracked requests, a first content object being requested and to identify, for each request of the tracked requests, a category of the requested first content object.
- the one or more processors and one or more memories are further configured to store the identified category and generate aggregated data indicating an amount of requests being for content objects with a specific category.
- the one or more processors and one or more memories are also configured to predict that a second content object will be requested, via the CDN, in the future based on the aggregated data and based on a category of the second content object and to cause access to the second content object to be improved such that the second content object is set to be provided faster in response to a request for the second content object than would otherwise occur.
- FIG. 1 depicts a block diagram of an embodiment of a content distribution system
- FIG. 2 depicts a block diagram of an embodiment of a content delivery network
- FIG. 3 depicts a block diagram of a content-request function
- FIG. 4 illustrates a flowchart of an embodiment of a process for selecting content objects or portions thereof for pre-warming
- FIG. 5 illustrates a flowchart of an embodiment of a process for selecting content objects or portions thereof for pre-warming
- FIG. 6 depicts a block diagram of an embodiment of a computer system
- FIG. 7 depicts a block diagram of an embodiment of a special-purpose computer system.
- a content originator 106 produces and/or distributes content objects and includes a content provider 108 , a content site 116 , and an origin server 112 .
- Content originator 106 offloads delivery of the content objects to a content delivery network (CDN) 110 in this embodiment.
- CDN 110 can respond to user requests by, e.g., accessing and processing requested content.
- CDN 110 can include components that identify tasks to be performed, prioritize these tasks and distribute workload of the tasks across a set of resources.
- CDN 110 can both cache and/or host content in various embodiments for third parties to offload delivery and typically provide better quality of service (QoS) to a broad spectrum of end user systems 102 distributed worldwide.
- QoS quality of service
- Content originator 106 is the customer of the CDN 110 and an end user 128 benefits from improvements in QoS.
- content distribution system 100 locates the content objects (or portions thereof) and distributes the content objects to an end user system 102 .
- the content objects are dynamically cached within the CDN 110 and/or hosted by the CDN 110 .
- a content object is any content file, content stream or a range defining a segment of a content file or content stream and could include, for example, video, pictures, data, audio, software, and/or text.
- the content object could be live, delayed or stored.
- the range defining a segment could be defined as a byte range or time range within the playback.
- a content object can include a customization structure including a customization list that specifies set of content objects and/or an order of the content objects in the set.
- the customization structure further includes the specified content objects.
- the customization file can include a list of audio files or a list of video files.
- a customization structure e.g., by requesting a movie that a content provider has tied to a customization file with inserted advertisements
- the user may in essence be requesting a group of individual content objects.
- the specific files identified in a customization file may be chosen by a content provider, a third-party service or an end user.
- a third-party service can identify a sequence of video portions and advertisement video clips, or an end user can identify an ordered list of songs to be played upon accessing a playlist.
- references may be made to a content object, content, content stream and/or content file, but it is to be understood that those terms could be used interchangeably wherever they may appear.
- CDN 110 uses a CDN 110 (or multiple CDNs) to deliver the content objects over the Internet 104 to end users 128 .
- Content providers 108 can pay for this service, and different types or quality of service can be provided, e.g., based on specific contracts or prices paid by content providers 108 .
- Content providers 108 can further interact with CDN 110 , e.g., to request that specific processing be performed on their content, to specify policies regarding the processing (e.g., prioritizing a first type of processing over a second or to ensure that the processing is only handled by specific resources or resources of a specific type), or to specify policies regarding use of resources assigned to (e.g., paid for by) the content provider.
- CDN 110 includes a number of points of presence (POPs) 120 , which are geographically distributed through the content distribution system 100 to deliver content with lower latency.
- POPs points of presence
- Various embodiments may have any number of POPs 120 within the CDN 110 that are generally distributed in various locations around the Internet 104 so as to be proximate to end user systems 102 .
- Multiple POPs 120 use the same IP address such that an Anycast routing scheme is used to find a POP likely to be close to the end user, in a network and/or geographic sense, for each request.
- WAN wide area network
- LAN local area network
- CDN 110 Distributed storage, processing and caching is provided by CDN 110 .
- Content originator 106 is the source or re-distributor of content objects, i.e., the so-called origin server 112 .
- Content site 116 is an Internet web site accessible by end user system 102 .
- content site 116 could be a web site where the content is viewable with a web browser.
- content site 116 could be accessible with application software other than a web browser.
- Content provider 108 directs content requests to a CDN 110 after they are made or formulates the delivery path by embedding the delivery path into the universal resource indicators (URIs) for a web page.
- URIs universal resource indicators
- the request for content is handed over to CDN 110 in this embodiment by using an Anycast IP address corresponding to two or more POPs 120 .
- CDN 110 hosts content objects and/or web pages to be the origin server.
- CDN 110 processes requests for content in the application layer of the open systems interconnection (OSI) model with URIs, URLs and HTTP.
- the particular POP 120 may retrieve the portion of the content object from content provider 108 where it is acting as the origin server.
- content provider 108 may directly provide content object to the CDN 110 and its associated POPs 120 through pre-population of caches (i.e., in advance of the first request) or hosting.
- a storage policy could be defined to specify the conditions under which pre-population is performed.
- the content objects are provided to CDN 110 and stored in one or more CDN servers such that the portion of the requested content may be hosted from CDN 110 .
- CDN servers include edge servers in each POP 120 that actually serve end user requests.
- the origin server 112 holds a copy of each content object for the content originator 106 .
- the content of the origin server 112 may be reconciled with the CDN 110 through a caching, hosting and/or pre-population algorithm, for example, through a storage policy.
- Some content providers could use an origin server within the CDN 110 to host the content and avoid the need to maintain a copy.
- the content object is processed (e.g., transcoded) and/or stored within the particular POP 120 and is served from that POP to the end user system 102 .
- End user system 102 receives the content object and can further process it for use by the end user 128 .
- End user system 102 could be a personal computer, media player, handheld computer, tablet, pad, Internet appliance, phone, smart phone, IPTV set top, streaming radio or any other device that receives and plays content objects.
- a number of the end user systems 102 could be networked together. Although this embodiment only shows a single content originator 106 and a single CDN 110 , it is to be understood that there could be many of each in various embodiments.
- a block diagram of an embodiment of a CDN 110 is shown. Although only one POP 120 is shown in detail, there are a number of POPs 120 similarly configured throughout the CDN 110 .
- the POP 120 may include a content request interface 220 , an edge server selection function 224 , a number of CDN edge servers 230 and their associated content databases 232 , a content-request function 240 , and a delivery function 228 .
- An interface from the Internet 104 to the POP 120 accepts requests for content objects from end user systems 102 . The requests come from an Internet protocol (IP) address of end user device 102 in the form of a URI that causes a HTTP get command.
- IP Internet protocol
- the interface from the Internet 104 to the POP 120 can further accept requests from content providers 108 to perform processing tasks on specific content objects or types of content objects and to define policies regarding processing related to content objects and/or resources associated with the content provider.
- the requests for content files from CDN 110 , requests for processing tasks, or requests policy definitions can pass through the application layer.
- a request for content is handed over to the CDN 110 , it will be associated with a particular POP 120 within the CDN 110 through any number of algorithms.
- the assignment may be based on usage characteristics of the requested content, usage characteristics of other content similar to the requested content, and/or an estimated location of an end user system 102 transmitting the request.
- the particular POP 120 receives the request for content object through the content request interface 220 and distributes the request to the edge server selection function 224 .
- the edge server selection function 224 assigns the request for content to an edge server 230 according to a routing scheme such as round robin, load balancing, etc.
- the edge server selection function can assign the request based on a parameter, such as: a characteristic of the requested content object, servers assigned to a particular content provider, quality-of-service (QoS) to be provided for the content object or content provider, performance metrics or capabilities of various edge servers, routing efficiency between edge servers and the end user system 102 , usage characteristics of the requested content, usage characteristics of other content similar to the requested content, and/or an estimated network or geographic location of an end user system transmitting the request.
- QoS quality-of-service
- There are a number of mechanisms used by the edge server selection function 224 such as through the domain name service (DNS) resolution, by redirecting the request for a content object or other known mechanisms.
- DNS domain name service
- a content database 232 stores content objects or portions thereof along with information that is relevant to the characteristics of the content object.
- Examples of content object characteristics may include storage space available on the edge server, size of the content object, encoded format of the content object and content categorizations of the content object.
- the content object characteristics from the content database 232 are used to determine a portion of the content object.
- the content-request function 240 gathers the content object characteristics and determines the portion of the content to request initially.
- the content-request function 240 is used by a number of edge servers 230 , but in other embodiments each edge server 230 could perform the content-request function 240 for the streams requested from the particular edge server 230 .
- the step of determining the portion of the content object to cache initially is performed by the content-request function 240 , which may use various algorithms.
- the content-request function 240 retrieves the portion of the content object from a remote location if not stored already in one of the content databases 232 .
- the remote location may be an origin server 112 or another CDN server in the same or different POP 120 .
- the portion of the requested content is then stored on the content database 232 such that the stored portion of the content object is accessible to the selected edge server 230 .
- the delivery function 228 delivers the portion of the requested content to the end user system 102 .
- the content may be streamed to the end user system 102 or delivered in full (e.g., via download) to the end user system.
- the delivery function 228 can deliver the portion of the requested content in response to subsequent requests for the content object.
- the content-request function 240 determines a portion of the content object to request and cache even prior to receiving an initial request for the content object.
- the delivery function 228 is shared by a number of edge servers 230 , but in other embodiments, each edge server 230 includes its own delivery function 228 .
- the content-request function 240 and/or delivery function 228 is not local to a single POP 120 but is instead accessible to a group of POPs 120 or to all POPs 120 in the CDN 110 .
- the delivery function 228 , content-request function 240 , edge server selection function 224 , and content request interface 220 could be implemented in one or more servers, network appliances and/or switches.
- the content-request function includes a request monitor 305 that monitors for requests for content. Upon detecting such a request, the request monitor 305 identifies the requested content, a requesting end user system 102 requesting the content, a type of end user system requesting content, an end user 128 requesting the content (e.g., using an association between an end user 128 and an end user system 102 or IP address or using a received login), and/or a date and time of the request.
- a request monitor 305 that monitors for requests for content. Upon detecting such a request, the request monitor 305 identifies the requested content, a requesting end user system 102 requesting the content, a type of end user system requesting content, an end user 128 requesting the content (e.g., using an association between an end user 128 and an end user system 102 or IP address or using a received login), and/or a date and time of the request.
- the request monitor 305 can further determine or estimate a capability of the end user system 102 , a desired format of the requested content, a content provider providing the requested content and/or a geographic location of the end user 128 .
- the initially identified information and/or the estimated or determined information can be stored in a content-usage database 310 .
- the information can be stored in a per-request basis (separately identifying pertinent information for each detected request) or in an aggregated manner (e.g., aggregating requests based on request receipt times, content providers and/or end-user geographic locations and storing distributions of other variables within each aggregated data group).
- the request monitor 305 further alerts other components of the content-request function 240 upon detecting a request, such that further data can be collected and/or determined.
- FIG. 3 shows a successive alert sequence between the request monitor 305 , a customization-structure analyzer 315 , a category detector 320 and a usage monitor 325 .
- the request monitor 305 can directly alert the category detector 320 and/or usage monitor 325 .
- the customization-structure analyzer 315 detects whether the requested content is a customization structure or a customization file.
- the customization-structure analyzer 315 can detect when a user requesting a single file is to be handled as a request for multiple files. For example, an end user 128 can request that a playlist be played.
- the customization structure can include the playlist itself, which identifies specific audio files and an order that the audio files are to be played, and the specific content files.
- an end user 128 can request that a video be played.
- a content provider providing the video may have indicated that the video is to be spliced into a series of portions and advertisement videos are to be inserted between the portions.
- the request for the video results in a request for a file identifying the video portions and advertisements and the portions and advertisements themselves.
- the customization-structure analyzer 315 identifies the specific content objects (e.g., identified in the a customization file) and any provided object order.
- the objects and order are stored in the content-usage database 310 .
- the length and/or size of the objects and/or one or more providers of the objects can further be stored in the content-usage database 310 .
- the customization file itself is stored in the content-usage database 310 .
- the category detector 320 detects one or more categories of requested content objects. For example, if a user requests a single content object that is not a customization structure, one or more categories can be identified for the object. As another example, if a user requests a customization structure, one or more categories can be identified for each content object therein.
- the categories can be identified in metadata (e.g., as tags) of the content objects, and may have been defined by a provider of the content objects. In some instances, the category detector 320 itself selects categories based on, e.g., a name of an object, a transcript or lyrics of the object and/or a description of the object. The category may be selected from a fixed or dynamic set of potential categories (e.g., selected using an ontology). The detected categories are then stored in the content-usage database 310 .
- the usage monitor 325 monitors the end-user system 102 that requested the content object to detect how the requested content object is accessed. For example, the usage monitor 325 can determine if the requested content object was fully played, or—if not—what portion was played. In instances in which a customization structure was requested, the usage monitor 325 can detect which of the content objects were accessed and in what order. For example, a user may request that songs on a playlist be played. However, rather than accessing the songs in an order identified in the playlist, the user may skip to select songs. The usage monitor 325 can detect this user-initiated access order and determine which songs were actually played. The detected usage pattern is stored in the content-usage database 310 .
- a usage prediction engine 330 then aggregates information in the content-usage database 310 .
- the aggregation can be performed, e.g., based on request receipt times, content providers providing requested objects, requesting end users or end-user devices, and/or geographic locations of end users requesting objects.
- the usage prediction engine 330 can identify, e.g., which content object(s) or portions thereof were frequently requested, were frequently accessed, and/or were frequently requested or accessed prior to other requested or accessed objects. This identification can include, e.g., identifying content objects or portions thereof having an access or request rate above an absolute or relative threshold.
- the usage prediction engine 330 predicts which content objects or portions thereof will subsequently be requested or accessed (e.g., by a particular user, using at a particular edge server, at a rate above an absolute or relative threshold, or prior to the end user subsequently requesting or accessing other content object).
- the prediction can include a probability of requests or access.
- this prediction is reflective of past requests or usage patterns. That is, the usage prediction engine 330 predicts that content objects previously frequently requested or accessed (e.g., generally or within a time interview) will continue to be similarly requested or accessed in the future, and/or that content objects frequently requested or accessed before other content objects are requested or accessed will continue to be requested or accessed relatively early. This analysis may nonetheless constrain the predictions based on conditions of past requests. For example, the prediction may be specific to a single end-user device.
- this prediction is based on detected content categories. Specifically, rather than the usage prediction engine 330 identifying specific content objects or portions thereof likely to be requested, the usage prediction engine 330 can predict that content objects having specific categories are likely to be requested or accessed (e.g., in full or in part; or in general or before requesting or accessing other content objects). This prediction can allow the usage prediction engine 330 to predict usage patterns of content objects even if they are new to the CDN 110 or if there is minimal or new content-usage data stored in the content-usage database for the specific objects.
- a pre-caching content identifier 335 can identify full or partial content objects to pre-cache (e.g., at an edge server or at a POP).
- the identified full or partial content objects can include those predicted to requested or accessed.
- the pre-caching content identifier 335 balances an objective to pre-cache content objects with practical considerations (e.g., finite storage space, allocation of storage space across multiple providers, incentives to implement some continuity about which content objects are pre-cached and/or content provider's prioritizations of serving different content objects).
- a content provider can subscribe to a CDN service in which a content object is to be pre-cached if it predicted that a fixed percentage of users will request the object.
- the pre-caching content identifier 335 can compare the request predictions made by the usage prediction engine 330 to the client-identified percentage.
- this prediction is based on a location of an end user 128 .
- the usage prediction engine 330 can predict which content objects or portions thereof will be requested or accessed by a specific end user 128 .
- the pre-caching content identifier 335 can then estimate an end user's location (e.g., based on recent requests assigned to the user) and conclude that the content objects or portions thereof should be stored at a server close (in a geographic or network sense) to the location.
- the pre-caching content identifier 335 determines which servers and/or POPs should store specific content objects.
- the pre-caching content identifier 335 can further determine which type of storage resource (e.g., a solid-state drive, high-speed hard disk drives, or traditional hard disk drives) to use to store content objects or portions thereof. The determination can again be based on the predictions made by the usage prediction engine 330 . Content objects or portions thereof predicted to be frequently requested, frequently accessed and/or requested or accessed prior to requesting or accessing other objects can be pre-cached in storage resources that can deliver high-speed responses to content requests. Content objects or portions thereof predicted to be requested or accessed at a lower frequency or later in a sequence of requests or accessed can be pre-cached in storage resources that deliver slower-speed responses to content requests. The determination can further be influenced based on, e.g., a content provider's prioritization of content objects, a content provider's level of service, a size of the content object, etc.
- a content provider's prioritization of content objects e.g., a content provider's level of service, a
- the pre-caching identifier 335 can also determine a time-to-live for the pre-cached objects.
- the time-to-live can again be based on the predictions made by the usage prediction engine 330 .
- Content objects or portions thereof predicted to be frequently requested, frequently accessed and/or requested or accessed prior to requesting or accessing other objects can be given a longer time-to-live than content objects or portions thereof predicted to be requested or accessed less frequently or later in a sequence.
- the time-to-live also or alternatively depends on a time period associated with the predictions made by the usage prediction engine 330 .
- the prediction can include a time-varying prediction as to a content object's request rate, and the time-to-live can be defined as a time period during which the prediction is above an absolute or relative threshold.
- the determinations relating to content objects or portions thereof to pre-cache, a storage-resource type to use for pre-caching and/or a time-to-live for pre-caching initiates a series of automated events to effect the recommended pre-caching.
- the determinations are presented to a CDN client or content provider.
- an interface could recommend specific content objects or specific content-object portions (e.g., a first 8-seconds of a video content object) to pre-cache, a resource type for pre-caching specific content objects or portions thereof and/or a time-to-live.
- the recommendations can also or alternatively include a recommendation not to pre-cache or to stop pre-caching specific content objects or portions thereof.
- the client or content provider may then accept or reject the recommendations, thereby initiating a series of automated events to effect the recommendations.
- the client or content provider can use the recommendations to tailor storage policies.
- FIG. 4 a flowchart of an embodiment of a process 400 for selecting content objects or portions thereof for pre-warming is shown.
- the depicted portion of the process 400 begins in block 404 where the request monitor 305 tracks requests from end users for content objects.
- the request monitor 305 can detect information for each request, such as the requested content object, the requesting end-user system 102 , and/or a date and time of the request.
- the category detector identifies categorizations of content objects at block 408 .
- These content objects can include those requested by the end users and/or other content objects.
- the categorizations can be identified for all content objects provided by a content provider.
- the categories can be defined as metadata tags provided for the object, and/or the categories can be determined based on a name and/or description of the object.
- the usage monitor 330 monitors the end users' access to the requested content objects at block 412 . Specifically, the usage monitor 330 can detect whether the content object was presented in its entirety to the end user system 102 , or—if not—what portion was presented. The usage monitor 330 can further detect which content object(s) were subsequently requested by the end user system 102 .
- the usage prediction engine 330 aggregates the tracking and access data in a category- and POP-specific manner at block 416 .
- the data may further be segregated based on, e.g., types of end-user systems 102 , content providers providing content objects at issue and/or time period.
- the tracking and access data available to the usage prediction engine is already specific to a POP or edge server, such that no further data distinction is required for POP-specific aggregation.
- the aggregated data can indicate content categories correlated with specific request rates or usage patterns. For example, the data may indicate that 70% of requesting users watch “funny animal” videos in their entirety, while 85% of requesting users watch only the first minute of “how-to” videos.
- the aggregated data can include a statistic (e.g., an average percentage of an object presented), a distribution (e.g., how frequently 0-5%, 5-10%, 10-15%, etc. of a content object was presented to requesting end user devices), a percentage or raw number (e.g., of end users requesting an object or requesting the object prior to another similar object), etc.
- a statistic e.g., an average percentage of an object presented
- a distribution e.g., how frequently 0-5%, 5-10%, 10-15%, etc. of a content object was presented to requesting end user devices
- a percentage or raw number e.g., of end users requesting an object or requesting the object prior to another similar object
- the usage prediction engine 330 predicts a subset of content objects likely to be requested at a POP at block 420 .
- the subset can be a subset of a set of content objects provided by a content provider, a set of content objects to be distributed by a CDN and/or a set of content objects of a given type (e.g., video content objects, audio content objects, etc.).
- the prediction can be made by comparing a statistic, percentage or raw number from the aggregated data to an absolute or relative threshold, which may be fixed or may vary (e.g., across content providers).
- the prediction can include a set of predictions, such as a first subset of content objects likely to be requested by a first percentage of users, a second subset of content objects likely to be requested by a second percentage of users, etc.
- the prediction includes a subset of content objects that are relatively unlikely to be requested by users or are likely to be requested by only a small percentage of users. Different predictions can further be made for different POPs and/or content providers.
- the pre-caching content identifier 335 causes the POP's access to at least some of the subset of content objects to be improved at block 424 .
- all or a portion of the content objects can be pre-cached at the POP, the content objects can be stored in a high-speed memory device, such as a solid state drive and/or the content objects can be provided with a long time-to-live in a cache.
- the subset of content objects is identified to a client of the CDN 110 or to a content provider, and the client or content provider can then accept an access-improving recommendation (e.g., to pre-cache specific content objects, to remove specific content objects from a cache, to implement a time-to-live, etc.) which causes the recommendation to take effect.
- Causing at least some of the subset of content objects to be pre-cached at the POP can include sending a request that the at least some content objects be transmitted to the POP. The request can be sent to an origin server or to another intra-CDN server.
- FIG. 5 a flowchart of an embodiment of a process 500 for selecting content objects or portions thereof for pre-warming is shown.
- the depicted portion of the process 500 begins in block 504 where the request monitor 305 tracks requests from end users for content objects.
- the requested content object can be a single object or a structure including multiple content objects.
- a user can request access to an audio playlist structure that identifies a set of content objects—each of which is to be made available to the user in response to the request.
- the customization-structure analyzer 315 accesses a customization structure at block 508 .
- the customization structure can be associated with a request.
- the customization-structure analyzer 315 can detect that the requested content object is a customization structure or file that, in response to the request, a customization structure or file is to be provided.
- the customization-structure analyzer 315 can identify specific content objects in the structure (or identified in a customization file) and an order that the specific content objects are to be provided.
- the usage monitor 330 monitors the end users' access to the requested content objects at block 512 .
- the usage monitor 330 can detect whether the content objects identified in a customization file were provided or not, were provided in part or in full, and/or were provided in order or not.
- the usage prediction engine 330 predicts a subset of content objects likely to be requested at a POP at block 516 .
- the subset can be a subset of a set of content objects provided by a content provider, a set of content objects to be distributed by a CDN, a set of content objects of a given type (e.g., video content objects, audio content objects, etc.), and/or a set of content objects identified in a customization file of the accessed customization structure.
- the POP is a POP which is estimated to be currently serving a specific end user 128 (e.g., associated with a particular customization structure). The estimation may be made by determining that an end user system 102 associated with the end user 128 recently requested another content object via an edge server in the POP.
- the prediction can be based on content objects identified in a set of customization files, content objects identified in a single customization file, content objects accessed by a set of end user systems subsequent to having requested customization structures, or content objects accessed by a single end user system subsequent to having requested a customization structure. For example, if Content Object A is in 15% of accessed customization structures, but Content Object B is only in 1% of customization structures, it can be predicted that Content Object A is more likely to be requested than Content Object B.
- the prediction can further include a prediction about an order as to which content objects of the subset of content objects will be accessed. The order can include a same order as identified in the customization file and/or it can depend on the monitored usage data. For example, a prediction can be made that a user will desire quick access, subsequent to a customization-structure request, to a content object first in a customization file of the structure, or that users will desire quick access to content objects frequently of low-order number in customization files.
- the pre-caching content identifier 335 causes the POP's access to at least some of the subset of content objects to be improved at block 520 .
- the at least some of the subset can include one or more content objects (in full or in part) of low order in one or more customization files.
- Improving access to content objects (or portions thereof) can include causing pre-caching the objects, storing the objects in a high-speed memory device and/or defining a long time-to-live for a cached instance of the objects.
- Causing at least some of the subset of content objects to be pre-cached at the POP can include sending a request that the at least some content objects be transmitted to the POP. The request can be sent to an origin server or to another intra-CDN server.
- the improved access can occur automatically or can depend on input from a client or content provider.
- a client can be presented with recommended access-improving techniques, which the client can then accept or reject.
- a client can be presented with the predictions of the subset of content objects likely to be requested. The client can then revise policies based on the rejections to improve access to the subset of content objects.
- an extent of the portion can be determined based on an estimated time that will be required to retrieve a next portion (or a remainder) of the content object. For example, if it is estimated that an entire content object can be retrieved in 10 seconds, a pre-cached portion can be a 10-second portion, to allow sufficient time to retrieve the rest of the object while simultaneously providing the beginning of the object to the user.
- the computer system 600 can include a computer 602 , keyboard 622 , a network router 612 , a printer 608 , and a monitor 606 .
- the monitor 606 , processor 602 and keyboard 622 are part of a computer system 626 , which can be a laptop computer, desktop computer, handheld computer, mainframe computer, etc.
- Monitor 606 can be a CRT, flat screen, etc.
- a designer 604 can input commands into computer 602 using various input devices, such as a mouse, keyboard 622 , track ball, touch screen, etc. If the computer system 600 comprises a mainframe, a designer 604 can access computer 602 using, for example, a terminal or terminal interface. Additionally, computer system 626 may be connected to a printer 608 and a server 610 using a network router 612 , which may connect to the Internet 618 or a WAN.
- Server 610 may, for example, be used to store additional software programs and data.
- software implementing the systems and methods described herein can be stored on a storage medium in server 610 .
- the software can be run from the storage medium in server 610 .
- software implementing the systems and methods described herein can be stored on a storage medium in computer 602 .
- the software can be run from the storage medium in computer system 626 . Therefore, in this embodiment, the software can be used whether or not computer 602 is connected to network router 612 .
- Printer 608 may be connected directly to computer 602 , in which case, computer system 626 can print whether or not it is connected to network router 612 .
- the content-request function 240 is an example of a special-purpose computer system 700 .
- the above methods may be implemented by computer-program products that direct a computer system to perform the actions of the above-described methods and components.
- Each such computer-program product may comprise sets of instructions (codes) embodied on a computer-readable medium that directs the processor of a computer system to perform corresponding actions.
- the instructions may be configured to run in sequential order, or in parallel (such as under different processing threads), or in a combination thereof. After loading the computer-program products on a general purpose computer system 626 , it is transformed into the special-purpose computer system 700 .
- Special-purpose computer system 700 comprises a computer 602 , a monitor 606 coupled to computer 602 , one or more additional user output devices 730 (optional) coupled to computer 602 , one or more user input devices 740 (e.g., keyboard, mouse, track ball, touch screen) coupled to computer 602 , an optional communications interface 750 coupled to computer 602 , a computer-program product 705 stored in a tangible computer-readable memory in computer 602 .
- Computer-program product 705 directs system 700 to perform the above-described methods.
- Computer 602 may include one or more processors 760 that communicate with a number of peripheral devices via a bus subsystem 790 .
- peripheral devices may include user output device(s) 730 , user input device(s) 740 , communications interface 750 , and a storage subsystem, such as random access memory (RAM) 770 and non-volatile storage drive 780 (e.g., disk drive, optical drive, solid state drive), which are forms of tangible computer-readable memory.
- RAM random access memory
- non-volatile storage drive 780 e.g., disk drive, optical drive, solid state drive
- Computer-program product 705 may be stored in non-volatile storage drive 790 or another computer-readable medium accessible to computer 602 and loaded into memory 770 .
- Each processor 760 may comprise a microprocessor, such as a microprocessor from Intel® or Advanced Micro Devices, Inc.®, or the like.
- the computer 602 runs an operating system that handles the communications of product 705 with the above-noted components, as well as the communications between the above-noted components in support of the computer-program product 705 .
- Exemplary operating systems include Windows® or the like from Microsoft Corporation, Solaris® from Sun Microsystems, LINUX, UNIX, and the like.
- User input devices 740 include all possible types of devices and mechanisms to input information to computer system 602 . These may include a keyboard, a keypad, a mouse, a scanner, a digital drawing pad, a touch screen incorporated into the display, audio input devices such as voice recognition systems, microphones, and other types of input devices. In various embodiments, user input devices 740 are typically embodied as a computer mouse, a trackball, a track pad, a joystick, wireless remote, a drawing tablet, a voice command system. User input devices 740 typically allow a user to select objects, icons, text and the like that appear on the monitor 606 via a command such as a click of a button or the like. User output devices 730 include all possible types of devices and mechanisms to output information from computer 602 . These may include a display (e.g., monitor 606 ), printers, non-visual displays such as audio output devices, etc.
- a display e.g., monitor 606
- non-visual displays such as audio output devices, etc.
- Communications interface 750 provides an interface to other communication networks and devices and may serve as an interface to receive data from and transmit data to other systems, WANs and/or the Internet 618 .
- Embodiments of communications interface 750 typically include an Ethernet card, a modem (telephone, satellite, cable, ISDN), a (asynchronous) digital subscriber line (DSL) unit, a FireWire interface, a USB interface, a wireless network adapter, and the like.
- communications interface 750 may be coupled to a computer network, to a FireWire® bus, or the like.
- communications interface 750 may be physically integrated on the motherboard of computer 602 , and/or may be a software program, or the like.
- RAM 770 and non-volatile storage drive 780 are examples of tangible computer-readable media configured to store data such as computer-program product embodiments of the present invention, including executable computer code, human-readable code, or the like.
- Other types of tangible computer-readable media include floppy disks, removable hard disks, optical storage media such as CD-ROMs, DVDs, bar codes, semiconductor memories such as flash memories, read-only-memories (ROMs), battery-backed volatile memories, networked storage devices, and the like.
- RAM 770 and non-volatile storage drive 780 may be configured to store the basic programming and data constructs that provide the functionality of various embodiments of the present invention, as described above.
- RAM 770 and non-volatile storage drive 780 may also provide a repository to store data and data structures used in accordance with the present invention.
- RAM 770 and non-volatile storage drive 780 may include a number of memories including a main random access memory (RAM) to store of instructions and data during program execution and a read-only memory (ROM) in which fixed instructions are stored.
- RAM 770 and non-volatile storage drive 780 may include a file storage subsystem providing persistent (non-volatile) storage of program and/or data files.
- RAM 770 and non-volatile storage drive 780 may also include removable storage systems, such as removable flash memory.
- Bus subsystem 790 provides a mechanism to allow the various components and subsystems of computer 602 communicate with each other as intended. Although bus subsystem 790 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple busses or communication paths within computer 602 .
- Implementation of the techniques, blocks, steps and means described above may be done in various ways. For example, these techniques, blocks, steps and means may be implemented in hardware, software, or a combination thereof.
- the processing units may be implemented within one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), processors, controllers, micro-controllers, microprocessors, other electronic units designed to perform the functions described above, and/or a combination thereof.
- ASICs application specific integrated circuits
- DSPs digital signal processors
- DSPDs digital signal processing devices
- PLDs programmable logic devices
- FPGAs field programmable gate arrays
- processors controllers, micro-controllers, microprocessors, other electronic units designed to perform the functions described above, and/or a combination thereof.
- the embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged.
- a process is terminated when its operations are completed, but could have additional steps not included in the figure.
- a process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function.
- embodiments may be implemented by hardware, software, scripting languages, firmware, middleware, microcode, hardware description languages, and/or any combination thereof.
- the program code or code segments to perform the necessary tasks may be stored in a machine readable medium such as a storage medium.
- a code segment or machine-executable instruction may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a script, a class, or any combination of instructions, data structures, and/or program statements.
- a code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, and/or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
- the methodologies may be implemented with modules (e.g., procedures, functions, and so on) that perform the functions described herein.
- Any machine-readable medium tangibly embodying instructions may be used in implementing the methodologies described herein.
- software codes may be stored in a memory.
- Memory may be implemented within the processor or external to the processor.
- the term “memory” refers to any type of long term, short term, volatile, nonvolatile, or other storage medium and is not to be limited to any particular type of memory or number of memories, or type of media upon which memory is stored.
- the term “storage medium” may represent one or more memories for storing data, including read only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other machine readable mediums for storing information.
- ROM read only memory
- RAM random access memory
- magnetic RAM magnetic RAM
- core memory magnetic disk storage mediums
- optical storage mediums flash memory devices and/or other machine readable mediums for storing information.
- machine-readable medium includes, but is not limited to portable or fixed storage devices, optical storage devices, wireless channels, and/or various other storage mediums capable of storing that contain or carry instruction(s) and/or data.
Abstract
Description
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/744,834 US8886769B2 (en) | 2013-01-18 | 2013-01-18 | Selective content pre-warming in content delivery networks based on user actions and content categorizations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/744,834 US8886769B2 (en) | 2013-01-18 | 2013-01-18 | Selective content pre-warming in content delivery networks based on user actions and content categorizations |
Publications (2)
Publication Number | Publication Date |
---|---|
US20140207912A1 US20140207912A1 (en) | 2014-07-24 |
US8886769B2 true US8886769B2 (en) | 2014-11-11 |
Family
ID=51208608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/744,834 Active US8886769B2 (en) | 2013-01-18 | 2013-01-18 | Selective content pre-warming in content delivery networks based on user actions and content categorizations |
Country Status (1)
Country | Link |
---|---|
US (1) | US8886769B2 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150163320A1 (en) * | 2013-12-10 | 2015-06-11 | Cisco Technology, Inc. | Social-driven precaching of accessible objects |
US20150312367A1 (en) * | 2014-04-25 | 2015-10-29 | Nec Europe Ltd. | Efficient caching in content delivery networks based on popularity predictions |
US10372513B2 (en) | 2015-04-30 | 2019-08-06 | Entit Software Llc | Classification of application events using call stacks |
US11843682B1 (en) * | 2022-08-31 | 2023-12-12 | Adobe Inc. | Prepopulating an edge server cache |
Families Citing this family (110)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9215269B2 (en) | 2012-08-23 | 2015-12-15 | Amazon Technologies, Inc. | Predictive caching for content |
US9712854B2 (en) * | 2012-09-06 | 2017-07-18 | Alcatel Lucent | Cost-aware cloud-based content delivery |
US9588874B2 (en) * | 2012-12-14 | 2017-03-07 | Microsoft Technology Licensing, Llc | Remote device automation using a device services bridge |
US9934283B2 (en) * | 2013-03-08 | 2018-04-03 | Google Llc | Social annotations for enhanced search results |
US10547676B2 (en) | 2013-05-02 | 2020-01-28 | International Business Machines Corporation | Replication of content to one or more servers |
US20150172354A1 (en) * | 2013-12-17 | 2015-06-18 | Limelight Networks, Inc. | Content-delivery transfer for cooperative delivery systems |
US9608890B1 (en) * | 2013-12-23 | 2017-03-28 | Kabam, Inc. | System and method for forwarding external notifications of events in a virtual space from a user device to a presentation control device |
US10218633B2 (en) * | 2014-03-28 | 2019-02-26 | Amazon Technologies, Inc. | Implementation of a service that coordinates the placement and execution of containers |
US9544388B1 (en) * | 2014-05-09 | 2017-01-10 | Amazon Technologies, Inc. | Client-side predictive caching for content |
US9191374B1 (en) * | 2014-09-22 | 2015-11-17 | Belkin International Inc. | Routing device data caching |
US9715402B2 (en) | 2014-09-30 | 2017-07-25 | Amazon Technologies, Inc. | Dynamic code deployment and versioning |
US9323556B2 (en) | 2014-09-30 | 2016-04-26 | Amazon Technologies, Inc. | Programmatic event detection and message generation for requests to execute program code |
US9678773B1 (en) | 2014-09-30 | 2017-06-13 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
US10048974B1 (en) | 2014-09-30 | 2018-08-14 | Amazon Technologies, Inc. | Message-based computation request scheduling |
US9830193B1 (en) | 2014-09-30 | 2017-11-28 | Amazon Technologies, Inc. | Automatic management of low latency computational capacity |
US9600312B2 (en) | 2014-09-30 | 2017-03-21 | Amazon Technologies, Inc. | Threading as a service |
US9146764B1 (en) | 2014-09-30 | 2015-09-29 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
US9537788B2 (en) | 2014-12-05 | 2017-01-03 | Amazon Technologies, Inc. | Automatic determination of resource sizing |
US10154068B2 (en) * | 2014-12-30 | 2018-12-11 | Akamai Technologies, Inc. | Self-adjusting tiered caching system to optimize traffic performance and origin offload |
US9588790B1 (en) | 2015-02-04 | 2017-03-07 | Amazon Technologies, Inc. | Stateful virtual compute system |
US9733967B2 (en) | 2015-02-04 | 2017-08-15 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US9727725B2 (en) | 2015-02-04 | 2017-08-08 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US9326046B1 (en) | 2015-03-19 | 2016-04-26 | Amazon Technologies, Inc. | Uninterrupted playback of video streams using lower quality cached files |
US9785476B2 (en) | 2015-04-08 | 2017-10-10 | Amazon Technologies, Inc. | Endpoint management system and virtual compute system |
US9930103B2 (en) | 2015-04-08 | 2018-03-27 | Amazon Technologies, Inc. | Endpoint management system providing an application programming interface proxy service |
US9843546B2 (en) * | 2015-07-23 | 2017-12-12 | International Business Machines Corporation | Access predictions for determining whether to share content |
US10831788B2 (en) * | 2015-08-07 | 2020-11-10 | International Business Machines Corporation | Determining a group recommendation |
US10146512B1 (en) | 2015-08-28 | 2018-12-04 | Twitter, Inc. | Feature switching kits |
GB2555026A (en) * | 2015-09-02 | 2018-04-18 | Google Llc | Software development and distribution platform |
US9928108B1 (en) | 2015-09-29 | 2018-03-27 | Amazon Technologies, Inc. | Metaevent handling for on-demand code execution environments |
US10042660B2 (en) | 2015-09-30 | 2018-08-07 | Amazon Technologies, Inc. | Management of periodic requests for compute capacity |
US9811363B1 (en) | 2015-12-16 | 2017-11-07 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
US9811434B1 (en) | 2015-12-16 | 2017-11-07 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
US9830175B1 (en) | 2015-12-16 | 2017-11-28 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
US9830449B1 (en) | 2015-12-16 | 2017-11-28 | Amazon Technologies, Inc. | Execution locations for request-driven code |
US10013267B1 (en) * | 2015-12-16 | 2018-07-03 | Amazon Technologies, Inc. | Pre-triggers for code execution environments |
US10754701B1 (en) | 2015-12-16 | 2020-08-25 | Amazon Technologies, Inc. | Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions |
US10067801B1 (en) | 2015-12-21 | 2018-09-04 | Amazon Technologies, Inc. | Acquisition and maintenance of compute capacity |
US9910713B2 (en) | 2015-12-21 | 2018-03-06 | Amazon Technologies, Inc. | Code execution request routing |
US10002026B1 (en) | 2015-12-21 | 2018-06-19 | Amazon Technologies, Inc. | Acquisition and maintenance of dedicated, reserved, and variable compute capacity |
US10162672B2 (en) | 2016-03-30 | 2018-12-25 | Amazon Technologies, Inc. | Generating data streams from pre-existing data sets |
US10891145B2 (en) | 2016-03-30 | 2021-01-12 | Amazon Technologies, Inc. | Processing pre-existing data sets at an on demand code execution environment |
US11132213B1 (en) | 2016-03-30 | 2021-09-28 | Amazon Technologies, Inc. | Dependency-based process of pre-existing data sets at an on demand code execution environment |
CN105978965B (en) * | 2016-05-06 | 2019-04-05 | 中国科学技术大学 | A kind of content categorizing method of content oriented request polymerization and cache decision |
US20170331914A1 (en) * | 2016-05-16 | 2017-11-16 | Aterlo Networks Inc. | System and method for optimizing online video streaming to a user |
US10282229B2 (en) | 2016-06-28 | 2019-05-07 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
US9952896B2 (en) | 2016-06-28 | 2018-04-24 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
US10102040B2 (en) | 2016-06-29 | 2018-10-16 | Amazon Technologies, Inc | Adjusting variable limit on concurrent code executions |
US10277708B2 (en) | 2016-06-30 | 2019-04-30 | Amazon Technologies, Inc. | On-demand network code execution with cross-account aliases |
US10203990B2 (en) | 2016-06-30 | 2019-02-12 | Amazon Technologies, Inc. | On-demand network code execution with cross-account aliases |
US10884787B1 (en) | 2016-09-23 | 2021-01-05 | Amazon Technologies, Inc. | Execution guarantees in an on-demand network code execution system |
US10061613B1 (en) | 2016-09-23 | 2018-08-28 | Amazon Technologies, Inc. | Idempotent task execution in on-demand network code execution systems |
US11119813B1 (en) | 2016-09-30 | 2021-09-14 | Amazon Technologies, Inc. | Mapreduce implementation using an on-demand network code execution system |
US10650071B2 (en) * | 2016-11-28 | 2020-05-12 | Google Llc | Search and retrieval of keyed data maintained using a keyed database |
US10397359B2 (en) * | 2016-12-30 | 2019-08-27 | Google Llc | Streaming media cache for media streaming service |
US10110934B1 (en) * | 2017-04-04 | 2018-10-23 | Verizon Patent And Licensing Inc. | Proactively providing content for content distribution networks |
US10819821B2 (en) * | 2017-04-07 | 2020-10-27 | Futurewei Technologies, Inc. | Method and system for allocating content using a content-based centrality metric |
US10779015B2 (en) | 2017-09-27 | 2020-09-15 | Cloudflare, Inc. | Delivering video in a content delivery network |
US10564946B1 (en) | 2017-12-13 | 2020-02-18 | Amazon Technologies, Inc. | Dependency handling in an on-demand network code execution system |
US10303492B1 (en) | 2017-12-13 | 2019-05-28 | Amazon Technologies, Inc. | Managing custom runtimes in an on-demand code execution system |
US10353678B1 (en) | 2018-02-05 | 2019-07-16 | Amazon Technologies, Inc. | Detecting code characteristic alterations due to cross-service calls |
US10831898B1 (en) | 2018-02-05 | 2020-11-10 | Amazon Technologies, Inc. | Detecting privilege escalations in code including cross-service calls |
US10733085B1 (en) | 2018-02-05 | 2020-08-04 | Amazon Technologies, Inc. | Detecting impedance mismatches due to cross-service calls |
US10572375B1 (en) | 2018-02-05 | 2020-02-25 | Amazon Technologies, Inc. | Detecting parameter validity in code including cross-service calls |
US10725752B1 (en) | 2018-02-13 | 2020-07-28 | Amazon Technologies, Inc. | Dependency handling in an on-demand network code execution system |
US10776091B1 (en) | 2018-02-26 | 2020-09-15 | Amazon Technologies, Inc. | Logging endpoint in an on-demand code execution system |
JP2019160076A (en) * | 2018-03-15 | 2019-09-19 | 東芝メモリ株式会社 | Management server, content management method, and content management program |
US11055268B2 (en) * | 2018-03-19 | 2021-07-06 | Fast Technologies, Inc. | Automatic updates for a virtual index server |
WO2019213169A1 (en) * | 2018-05-01 | 2019-11-07 | B.yond, Inc. | Synchronized distributed processing in a communications network |
US10853115B2 (en) | 2018-06-25 | 2020-12-01 | Amazon Technologies, Inc. | Execution of auxiliary functions in an on-demand network code execution system |
US10649749B1 (en) | 2018-06-26 | 2020-05-12 | Amazon Technologies, Inc. | Cross-environment application of tracing information for improved code execution |
US11146569B1 (en) | 2018-06-28 | 2021-10-12 | Amazon Technologies, Inc. | Escalation-resistant secure network services using request-scoped authentication information |
US10949237B2 (en) | 2018-06-29 | 2021-03-16 | Amazon Technologies, Inc. | Operating system customization in an on-demand network code execution system |
US11099870B1 (en) | 2018-07-25 | 2021-08-24 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
US11099917B2 (en) | 2018-09-27 | 2021-08-24 | Amazon Technologies, Inc. | Efficient state maintenance for execution environments in an on-demand code execution system |
US11243953B2 (en) | 2018-09-27 | 2022-02-08 | Amazon Technologies, Inc. | Mapreduce implementation in an on-demand network code execution system and stream data processing system |
US11943093B1 (en) | 2018-11-20 | 2024-03-26 | Amazon Technologies, Inc. | Network connection recovery after virtual machine transition in an on-demand network code execution system |
US10884812B2 (en) | 2018-12-13 | 2021-01-05 | Amazon Technologies, Inc. | Performance-based hardware emulation in an on-demand network code execution system |
US11010188B1 (en) | 2019-02-05 | 2021-05-18 | Amazon Technologies, Inc. | Simulated data object storage using on-demand computation of data objects |
US11861386B1 (en) | 2019-03-22 | 2024-01-02 | Amazon Technologies, Inc. | Application gateways in an on-demand network code execution system |
US11119809B1 (en) | 2019-06-20 | 2021-09-14 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11115404B2 (en) | 2019-06-28 | 2021-09-07 | Amazon Technologies, Inc. | Facilitating service connections in serverless code executions |
US11190609B2 (en) | 2019-06-28 | 2021-11-30 | Amazon Technologies, Inc. | Connection pooling for scalable network services |
US11159528B2 (en) | 2019-06-28 | 2021-10-26 | Amazon Technologies, Inc. | Authentication to network-services using hosted authentication information |
US11496809B2 (en) * | 2019-07-19 | 2022-11-08 | Hulu, LLC | Video file storage prediction process for caches in video servers |
CN110493643B (en) * | 2019-08-06 | 2020-12-15 | 北京邮电大学 | Video storage method and device |
US11360948B2 (en) | 2019-09-27 | 2022-06-14 | Amazon Technologies, Inc. | Inserting owner-specified data processing pipelines into input/output path of object storage service |
US11550944B2 (en) | 2019-09-27 | 2023-01-10 | Amazon Technologies, Inc. | Code execution environment customization system for object storage service |
US11263220B2 (en) | 2019-09-27 | 2022-03-01 | Amazon Technologies, Inc. | On-demand execution of object transformation code in output path of object storage service |
US11055112B2 (en) | 2019-09-27 | 2021-07-06 | Amazon Technologies, Inc. | Inserting executions of owner-specified code into input/output path of object storage service |
US11023311B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | On-demand code execution in input path of data uploaded to storage service in multiple data portions |
US11106477B2 (en) | 2019-09-27 | 2021-08-31 | Amazon Technologies, Inc. | Execution of owner-specified code during input/output path to object storage service |
US11386230B2 (en) | 2019-09-27 | 2022-07-12 | Amazon Technologies, Inc. | On-demand code obfuscation of data in input path of object storage service |
US11023416B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | Data access control system for object storage service based on owner-defined code |
US11656892B1 (en) | 2019-09-27 | 2023-05-23 | Amazon Technologies, Inc. | Sequential execution of user-submitted code and native functions |
US10996961B2 (en) | 2019-09-27 | 2021-05-04 | Amazon Technologies, Inc. | On-demand indexing of data in input path of object storage service |
US11250007B1 (en) | 2019-09-27 | 2022-02-15 | Amazon Technologies, Inc. | On-demand execution of object combination code in output path of object storage service |
US11416628B2 (en) | 2019-09-27 | 2022-08-16 | Amazon Technologies, Inc. | User-specific data manipulation system for object storage service based on user-submitted code |
US11394761B1 (en) | 2019-09-27 | 2022-07-19 | Amazon Technologies, Inc. | Execution of user-submitted code on a stream of data |
US10908927B1 (en) | 2019-09-27 | 2021-02-02 | Amazon Technologies, Inc. | On-demand execution of object filter code in output path of object storage service |
US11277305B2 (en) * | 2019-10-09 | 2022-03-15 | Qualcomm Incorporated | Edge discovery techniques in wireless communications systems |
US10942795B1 (en) | 2019-11-27 | 2021-03-09 | Amazon Technologies, Inc. | Serverless call distribution to utilize reserved capacity without inhibiting scaling |
US11119826B2 (en) | 2019-11-27 | 2021-09-14 | Amazon Technologies, Inc. | Serverless call distribution to implement spillover while avoiding cold starts |
US11451603B2 (en) * | 2020-02-25 | 2022-09-20 | Disney Enterprises, Inc. | Selective pre-caching of media streams |
US11714682B1 (en) | 2020-03-03 | 2023-08-01 | Amazon Technologies, Inc. | Reclaiming computing resources in an on-demand code execution system |
US11188391B1 (en) | 2020-03-11 | 2021-11-30 | Amazon Technologies, Inc. | Allocating resources to on-demand code executions under scarcity conditions |
US11775640B1 (en) | 2020-03-30 | 2023-10-03 | Amazon Technologies, Inc. | Resource utilization-based malicious task detection in an on-demand code execution system |
US11550713B1 (en) | 2020-11-25 | 2023-01-10 | Amazon Technologies, Inc. | Garbage collection in distributed systems using life cycled storage roots |
US11593270B1 (en) | 2020-11-25 | 2023-02-28 | Amazon Technologies, Inc. | Fast distributed caching using erasure coded object parts |
US11388210B1 (en) | 2021-06-30 | 2022-07-12 | Amazon Technologies, Inc. | Streaming analytics using a serverless compute system |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5983214A (en) | 1996-04-04 | 1999-11-09 | Lycos, Inc. | System and method employing individual user content-based data and user collaborative feedback data to evaluate the content of an information entity in a large information communication network |
US6269275B1 (en) | 1998-03-31 | 2001-07-31 | Michael G. Slade | Method and system for customizing and distributing presentations for user sites |
US6754699B2 (en) | 2000-07-19 | 2004-06-22 | Speedera Networks, Inc. | Content delivery and global traffic management network system |
US6917960B1 (en) | 2000-05-05 | 2005-07-12 | Jibe Networks | Intelligent content precaching |
US7130890B1 (en) * | 2002-09-04 | 2006-10-31 | Hewlett-Packard Development Company, L.P. | Method and system for adaptively prefetching objects from a network |
US7231496B2 (en) * | 2003-09-15 | 2007-06-12 | International Business Machines Corporation | Method, system and program product for caching data objects |
US20070156845A1 (en) | 2005-12-30 | 2007-07-05 | Akamai Technologies, Inc. | Site acceleration with content prefetching enabled through customer-specific configurations |
US20080065718A1 (en) * | 2006-09-12 | 2008-03-13 | Emc Corporation | Configuring a cache prefetch policy that is controllable based on individual requests |
WO2009087549A2 (en) | 2007-12-31 | 2009-07-16 | France Telecom | Multimedia content prefetching engine |
US20120254917A1 (en) | 2011-04-01 | 2012-10-04 | Mixaroo, Inc. | System and method for real-time processing, storage, indexing, and delivery of segmented video |
US20120272266A1 (en) | 2009-12-31 | 2012-10-25 | Huawei Technologies Co., Ltd. | Media playback method and system, content delivery network device, and advertising server |
-
2013
- 2013-01-18 US US13/744,834 patent/US8886769B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5983214A (en) | 1996-04-04 | 1999-11-09 | Lycos, Inc. | System and method employing individual user content-based data and user collaborative feedback data to evaluate the content of an information entity in a large information communication network |
US6269275B1 (en) | 1998-03-31 | 2001-07-31 | Michael G. Slade | Method and system for customizing and distributing presentations for user sites |
US6917960B1 (en) | 2000-05-05 | 2005-07-12 | Jibe Networks | Intelligent content precaching |
US6754699B2 (en) | 2000-07-19 | 2004-06-22 | Speedera Networks, Inc. | Content delivery and global traffic management network system |
US7130890B1 (en) * | 2002-09-04 | 2006-10-31 | Hewlett-Packard Development Company, L.P. | Method and system for adaptively prefetching objects from a network |
US7231496B2 (en) * | 2003-09-15 | 2007-06-12 | International Business Machines Corporation | Method, system and program product for caching data objects |
US20070156845A1 (en) | 2005-12-30 | 2007-07-05 | Akamai Technologies, Inc. | Site acceleration with content prefetching enabled through customer-specific configurations |
US20080065718A1 (en) * | 2006-09-12 | 2008-03-13 | Emc Corporation | Configuring a cache prefetch policy that is controllable based on individual requests |
WO2009087549A2 (en) | 2007-12-31 | 2009-07-16 | France Telecom | Multimedia content prefetching engine |
US20120272266A1 (en) | 2009-12-31 | 2012-10-25 | Huawei Technologies Co., Ltd. | Media playback method and system, content delivery network device, and advertising server |
US20120254917A1 (en) | 2011-04-01 | 2012-10-04 | Mixaroo, Inc. | System and method for real-time processing, storage, indexing, and delivery of segmented video |
Non-Patent Citations (2)
Title |
---|
Xing Xie et al., "Enabling Personalization Services on the Edge", Retrieved on Feb. 25, 2013 from http://research.microsoft.com/en-us/people/xingx/enabling-personalization-services-on-the-edge.pdf, 2002, pp. 1-4, Microsoft. |
Xing Xie et al., "Enabling Personalization Services on the Edge", Retrieved on Feb. 25, 2013 from http://research.microsoft.com/en-us/people/xingx/enabling—personalization—services—on—the—edge.pdf, 2002, pp. 1-4, Microsoft. |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150163320A1 (en) * | 2013-12-10 | 2015-06-11 | Cisco Technology, Inc. | Social-driven precaching of accessible objects |
US9344515B2 (en) * | 2013-12-10 | 2016-05-17 | Cisco Technology, Inc. | Social-driven precaching of accessible objects |
US9628582B2 (en) | 2013-12-10 | 2017-04-18 | Cisco Technology, Inc. | Social-driven precaching of accessible objects |
US20150312367A1 (en) * | 2014-04-25 | 2015-10-29 | Nec Europe Ltd. | Efficient caching in content delivery networks based on popularity predictions |
US9648126B2 (en) * | 2014-04-25 | 2017-05-09 | Nec Corporation | Efficient caching in content delivery networks based on popularity predictions |
US10372513B2 (en) | 2015-04-30 | 2019-08-06 | Entit Software Llc | Classification of application events using call stacks |
US11843682B1 (en) * | 2022-08-31 | 2023-12-12 | Adobe Inc. | Prepopulating an edge server cache |
Also Published As
Publication number | Publication date |
---|---|
US20140207912A1 (en) | 2014-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8886769B2 (en) | Selective content pre-warming in content delivery networks based on user actions and content categorizations | |
US11470148B2 (en) | Content delivery network | |
US11509741B2 (en) | Managing mobile device user subscription and service preferences to predictively pre-fetch content | |
US8527645B1 (en) | Distributing transcoding tasks across a dynamic set of resources using a queue responsive to restriction-inclusive queries | |
CN107251525B (en) | Distributed server architecture for supporting predictive content pre-fetching services for mobile device users | |
US10069885B2 (en) | Bandwidth management for over-the-top adaptive streaming | |
US10367872B2 (en) | Cloud-based video delivery | |
US20150256577A1 (en) | Directing Fragmented Content | |
US9838459B2 (en) | Enhancing dash-like content streaming for content-centric networks | |
US9378508B2 (en) | System and method for content pre-positioning determination | |
US8892686B1 (en) | Dynamic content transformation for multiple devices | |
US8495171B1 (en) | Indiscriminate virtual containers for prioritized content-object distribution | |
US8612450B1 (en) | Content tagging using multi-node hierarchical content assignments | |
US8346784B1 (en) | Java script reductor | |
WO2022034619A1 (en) | System and method for delivering media content to users | |
US9633217B2 (en) | Indiscriminate virtual containers for prioritized content-object distribution | |
CA3034846C (en) | Real-time advertisement preparation system | |
TW201501526A (en) | Method for providing a content part of a multimedia content to a client terminal, corresponding cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: LIMELIGHT NETWORKS, INC., ARIZONA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:THIBEAULT, JASON;NAZARIO, EDGARDO;SIGNING DATES FROM 20121207 TO 20130111;REEL/FRAME:029656/0567 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.) |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551) Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
AS | Assignment |
Owner name: LYNROCK LAKE MASTER FUND LP (LYNROCK LAKE PARTNERS LLC, ITS GENERAL PARTNER), NEW YORK Free format text: PATENT SECURITY AGREEMENT;ASSIGNORS:EDGIO, INC.;MOJO MERGER SUB, LLC;REEL/FRAME:065597/0212 Effective date: 20231114 Owner name: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, ARIZONA Free format text: PATENT SECURITY AGREEMENT;ASSIGNORS:EDGIO, INC.;MOJO MERGER SUB, LLC;REEL/FRAME:065597/0406 Effective date: 20231114 |