Content delivery network transitional caching

Systems, methods, apparatus, and software for transitional caching in content delivery networks includes edge cache nodes configured to receive and reply to content requests. Content can be cached in edge cache nodes before receiving user requests or retrieved from an origin server. A transitional cache node array is configured to receive content requests from edge cache nodes and to receive origin content from edge cache nodes and/or origin servers, as well as to modify origin content to generate modified content. Modified content can include re-written origin content (e.g., translations), transcoded data (e.g., video), compressed or otherwise adjusted data (e.g., images), and transformed files (e.g., CSS and JavaScript files), among others. In addition to assisting with original and modified content flow to end users, transitional caching also can assist in threat detection and mitigation within a CDN, helping to protect the network, origin servers and the like.

TECHNICAL BACKGROUND

Network-provided content, such as Internet web pages and the like, are typically served to end users via networked computer systems. End user requests for network content are processed and the content is responsively provided over various network links. These networked computer systems can include origin or hosting servers that originally host network content, such as web servers for hosting a news website. However, computer systems consisting solely of individual content origins or hosts can become overloaded and slow due to frequent requests of content by end users.

Content delivery networks (CDNs) add a layer of caching between content providers' original servers and end users. Content delivery networks typically have multiple distributed edge cache nodes that provide end users with faster access to content. When an end user requests content, such as a web page, the request is handled by an edge cache node that is configured to respond to the end user request (e.g., instead of an origin server). Specifically, when an end user directs a content request to a given origin server, the domain name system (DNS) resolves to an edge cache node (frequently the edge node is selected as an optimized server) instead of the origin server and the edge cache node handles that request.

Thus an edge cache node acts as a proxy or cache for one or more origin servers. Various types of origin server content can be cached in the content delivery network's various cache nodes. When all or a portion of the requested content has not been cached by an edge cache node, that edge cache node typically requests the relevant content (or portion thereof) from the appropriate origin server(s) on behalf of the end user.

OVERVIEW

Various implementations of transitional caching in content delivery networks and the like include a plurality of edge cache nodes that are configured to receive end user content requests, obtain the requested content, and respond to the end user requests. The content can be cached in the edge cache nodes prior to receiving an end user request or can be retrieved from an origin server or the like. A transitional cache node array is configured to receive content requests from the edge cache nodes and to receive origin content from the edge cache nodes and/or the origin servers. The transitional cache node array also is configured to modify origin content to generate modified content. The transitional cache nodes can in some implementations therefore reply to both origin content requests (e.g., when a transitional cache node has pre-cached origin content that an edge cache node does not have cached) and modified content requests (e.g., when a transitional cache node has modified origin content and cached the modified content resulting therefrom) from the edge cache nodes. Pre-caching involves caching content in the intermediate transitional cache nodes rather than in edge cache nodes.

Modification of origin content to generate modified content can include re-writing origin content in various languages (i.e., translation), transcoding data (e.g., video) to prevalent bit rates, compressing or otherwise adjusting data (e.g., images) to accommodate prevalent sizes and formats, and transforming files (e.g., CSS and JavaScript files) as needed.

In addition to assisting with the flow of original and modified content to end users, implementations of transitional caching in content delivery networks and the like also can assist in threat detection and mitigation within a CDN, helping to protect the network as well as origin servers and the like.

DETAILED DESCRIPTION

Network content such as web content typically comprises text, hypertext markup language (HTML) pages, pictures, digital media content, video, audio, code, scripts, and/or other content viewable on and rendered by an end user device in a browser or other specialized application. Such network-provided content, such as Internet web pages and the like, is typically served to end users via networked computer systems that provide requested content over various network links. A content delivery network (a “CDN”) is an example of such a networked computer system.

Content delivery networks employ edge cache nodes that are configured to respond to end user requests for content (e.g., a web page) by sending the web page's “primary resource” (e.g., a hypertext mark-up language (HTML) file, such as XHTML or HTML5 files and the like) to an end user device's web browser, which “loads” (or “renders” or “parses”) the web page in accordance with an appropriate standard (e.g., the HTML5 specification) and/or model (e.g., the Document Object Model (DOM) that organizes the nodes of a document (web page) in a tree structure known as a DOM tree). Web browsers identify and organize the various elements of a web page to generate the page displayed on a user's device.

FIG. 1illustrates an exemplary content delivery system100that includes content delivery network (CDN)108, end user devices101,102,103, origin servers140,141, and management system160. Content delivery network108includes an edge cache node array110, which can include edge cache nodes (eCNs)111,112,113, each of which can possess suitable processing resources and one or more data storage systems. Each eCN111-113communicates with each other eCN over CDN network links. Each of eCN111-113can include one or more data storage systems, such as data storage system120(illustrated for eCN113) which can store cached content121comprised of content145-146obtained from servers140-141.

End user devices101-103are representative of a plurality of end user communication devices that can request and receive content from CDN108. The transfer of content from CDN108to a given end user device is initiated when a specific user device101-103associated with a given edge cache node111-113transmits a request for content to its corresponding edge cache node (any number of end user devices101-103can be associated with a single edge cache node). Edge cache nodes111-113and end users101-103communicate over associated network links171. Other network components likewise communicate over appropriate links.

Management system160(which, for example, can be part of content delivery network administration in some implementations) collects and delivers various administrative and other data, for example configuration changes and status information (e.g., for various parties such as system operators, origin server operators, managers and the like). For example, operator device150can transfer configuration data151for delivery to management system160, where configuration data151can, for example, alter caching and the handling of network content requests by eCNs111-113, among other operations. Also, management system160can monitor status information for the operation of CDN108, such as operational statistics, and provide status information153to operator device150. Furthermore, operator device150can transfer content152for delivery to origin servers140-141to include in content145-146. Although one operator device150is shown inFIG. 1, it should be understood that this is merely representative and communication system100can include multiple operator devices for receiving status information, providing configuration information, or transferring content to origin servers. Content delivery network108and management system160communicate over link175.

Content cached in and/or obtained by one of the eCNs111-113is used to respond to end user requests by transmitting requested content to the end user device. As is well known in the art, content delivery network108can cache content from origin content sources such as origin servers140-141and can also seek and obtain content that is not cached by communicating directly with origin content sources (e.g., origin servers140-141over associated network links173).FIG. 1shows cached content121included in data storage system120of edge cache node113as comprised of content145-146. Other configurations are possible, including subsets of content145-146being cached in individual ones of eCN111-113. AlthoughFIG. 1shows content145-146of origin servers140-141being cached by data storage system120, other content can be handled by eCN111-113.

Some implementations deploying transitional caching in content delivery networks utilize transitional cache nodes that can be configured to provide one or more functions, services, etc. that are “off-loaded” from and/or supplement either content origins (e.g., origin servers140,141ofFIG. 1) and/or edge cache nodes (e.g., nodes111-113ofFIG. 1). One non-limiting example of such transitional caching is a transitional cache node array130as shown inFIG. 1. Array130includes individual transitional cache nodes (tCNs)131,132,133,135. Implementations of CDN transitional caching can utilize this transitional caching array in various ways. InFIG. 1, content146from origin server141is provided to and is cached in transitional cache node135. Various functions and services138can be made available in node135in addition to storing origin content from origin servers.

Transitional cache node array130is shown as part of CDN108, though the transitional cache nodes can be more distributed and some or all of it may operate “outside” the relevant CDN. In implementations where the array130is internal to CDN108, as shown in the non-limiting example ofFIG. 1, dedicated communication links174can be implemented to facilitate and speed communication and data transfer between tCNs131-135and eCNs111-113. In some implementations the transitional caching is invisible to parties outside the CDN, such as origin servers140,141and end users101-103—that is, those parties in such implementations see the CDN and not its individual components. In other implementations one or more of those parties may be aware of the transitional caching function and have the option of utilizing it as that party deems appropriate. For example, an origin server might direct certain content to transitional caching array130to pre-cache the CDN108with content that represents high-volume traffic without substantial changes over time, essentially allowing the eCNs111-113to run lean so that content requests are answered promptly without the need for storing as much content within the edge cache node array110. Pre-caching can include caching origin content and/or modified content at the request of a content provider, based on historical data relating to the operation of the edge cache nodes, and/or on other bases. Pre-caching of the transitional cache node array130can reduce the caching requirements and improve the diversity of origin content and modified content available to the edge cache node array110.

Moreover, even in configurations in which origin servers and the like are unaware of the transitional caching capabilities, these may nevertheless be used as an additional destination and/or the initial destination of content being supplied to the CDN108. If an edge cache node is responding to an end user request to deliver content, that content may be directed initially to the relevant edge cache node111-113, while a copy or other information regarding the content may be sent to the transitional cache node array130for processing. In such situations, the content may be chosen by CDN108based on historical data and/or other intelligent caching criteria to determine which content is most likely to benefit from such transitional caching processing. In the non-limiting example ofFIG. 1, a transitional information module191or the like can receive, manage and store historical data, performance data, instructions and/or other information that assists transitional cache node array130in one or more ways. For example, instructions or data stored in module191can assist array130in determining what the most relevant content is (for a group of content providers, for all providers, or for a specified provider) and can inform decisions on what content should be stored on one or more edge cache nodes in array110and what content should be stored on one or more transitional cache nodes in array130(including content that might benefit from pre-processing as described herein).

In some implementations the transitional cache node array serves as an intermediary in the CDN and communicates directly with origin servers and communicates directly with edge cache nodes (e.g., as shown inFIGS. 2A and 2B). Origin content is sent from origin servers to the transitional cache nodes for initial caching and pre-processing, for example. Pre-processing can include anticipatory pre-processing (i.e., modifying content formats and other customary modifications) and live pre-processing, where origin content is modified to respond to a pending end user request. Whether anticipatory or live, such pre-processing offloads such functions from the edge cache nodes and allows them to cache and deliver more efficiently.

If, for example, one or more web pages are in high demand by end users, pre-processing of that content might be beneficial. In such situations the content may include images and/or video and may be in high demand (e.g., as detected and/or determined vis-à-vis thresholds, limits, ranges and/or other metrics) by end users in a wide variety of geographic locations using a variety of access technologies and capabilities. Such high-demand content can be processed to re-write the content in various languages (i.e., translation), to transcode video to prevalent bit rates, to compress or otherwise adjust images to accommodate prevalent sizes and formats, and to transform CSS and JavaScript files as needed. In implementations where a transitional cache node array functions to support replying to end user requests, the edge cache node array110can utilize (and “see”) the transitional cache node array130as a “virtual origin,” while origin servers simultaneously can utilize (and “see”) the transitional cache node array130as a “virtual edge node.”

Pre-processing can include a variety of functions, processes, etc. For example, some content can include large source files, such as digital media including movies, live broadcasts, audio files, or user-generated videos, which in some cases might be cached by the content delivery network. However, end users frequently request different formats or containers for such digital media, leading to potentially having to cache many different versions office action copies of large files in CDN nodes. Content delivery networks can struggle with large digital media files, such as movies, live broadcasts, large audio files, or user-generated videos, since caching of the large media files can lead to poor performance or unreasonable storage requirements due to the process of caching entire large media file from an origin server to a content node. Also, the digital format or digital container of these media files can be unsuitable for streaming to an end user.

Transcoding and transmuxing of the media files prior to end user requests for the media also can be time consuming and require further data storage to store multiple versions of each media file. Transcoding typically involves changing properties of the content, such as a bit rate, encoding scheme, frame rate, resolution, compression, or other properties. Transmuxing, in contrast, changes a container or wrapper associated with the media content, such as changing from one media container format suitable for viewing a medial file on a local machine, to a different media container format suitable for streaming over a network or the Internet.

Transitional caching also can be implemented bi-directionally to assist in shielding origin servers from both high volumes (whether from end users or edge cache nodes) and from malicious activities directed at the CDN and/or one or more origin servers without the need for additional processing, scanning, etc. within edge cache nodes. When edge cache nodes are maintained in a lean mode, functioning to pass end user requests to transitional cache nodes and responding with content stored on the edge cache nodes, stored on one or more transitional cache nodes, and/or obtained from origin servers and the like, the transitional cache nodes also can function as shield nodes to assist with evaluating and detecting distributed denial of service attacks and the like. The bandwidth and computational capabilities of the transitional cache nodes allows the edge cache nodes to maintain high operational performance while the transitional cache node resources absorb the processing overhead that accompanies DoS evaluation and mitigation efforts.

In addition to diluting or otherwise mitigating DoS attacks, transitional caching can further insulate origin servers and other parties from malicious network traffic. If malware or the like is being trafficked with, within, or to content being served by the CDN, transitional caching can be used to filter out such problems either on its way to an origin server or from an origin server (or both). Thus transitional caching can act as a shield between end users and origin servers without bogging down edge cache nodes with inordinate scanning and/or processing functions.

A transitional cache node array can be organized in a variety of configurations, depending on the number of transitional cache nodes, any functional specialization within the transitional cache nodes, the number of edge cache nodes serviced by a given transitional cache node array, expected traffic, etc.FIG. 2Aillustrates a chained or in series arrangement of transitional cache nodes (tCNs)131,132,133,134,135connected to one another via communication links177, to edge cache node array110via communication link174, and to origin servers140,141via communication links173. Another implementation of transitional cache node array130is illustrated inFIG. 2B(in bothFIGS. 2A and 2Bthe transitional cache node array can provide pre-processing and other functional roles for “outbound” content from the origin servers to edge cache nodes and end users and for threat detection and mitigation on “inbound” communications to the CDN, thus allowing the transitional cache node array also to function as a shield node array), wherein the transitional cache nodes (tCNs)131,132,133,134,135are connected in parallel to both the edge cache node array110(via communication links174) and to origin servers140,141(via communication links173). Various combinations of parallel and series connections, as well as other logical arrangements of transitional cache nodes can be implemented as desired. As noted in connection with implementations shown inFIG. 1, internal communication links between edge cache nodes and transitional cache nodes (e.g., links174and177inFIGS. 1, 2A and 2B) can be high speed dedicated links that facilitate exchanges of data between the edge cache nodes and the transitional cache nodes.

FIG. 3illustrates one or more implementations of a cache node300that can be used in connection with content delivery network transitional caching. Cache node300can be an example of one of the edge cache nodes111-113or one of the transitional cache nodes131-135ofFIG. 1, although variations are possible. Cache node300includes network interface305and processing system310. Processing system310includes processing circuitry311, random access memory (RAM)318, and storage312, although further elements can be included. Exemplary contents of RAM318are further detailed in RAM space380, and exemplary contents of storage312are further detailed in storage system320.

Processing circuitry311can be implemented within a single processing device but can also be distributed across multiple processing devices or sub-systems that cooperate in executing program instructions. Examples of processing circuitry311include general purpose central processing units, microprocessors, application specific processors, and logic devices, as well as any other type of processing device. In some examples, processing circuitry311includes physically distributed processing devices, such as cloud computing systems.

Network interface305includes one or more network interfaces for communicating over internal communications within a content delivery networks as well as communicating via communication networks, such as packet networks, the Internet, and the like. The network interfaces can include one or more local or wide area network communication interfaces which can communicate over Ethernet or Internet protocol (IP) links. Network interface305can include network interfaces configured to communicate using one or more network addresses, which can be associated with different network links. Examples of network interface305include network interface card equipment, transceivers, modems, and other communication circuitry.

RAM318and storage312together can comprise a non-transitory data storage system, although variations are possible. RAM318and storage312can each comprise any storage media readable by processing circuitry311and capable of storing software. RAM318can include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Storage312can include non-volatile storage media, such as solid state storage media, flash memory, phase change memory, magnetic memory, or as illustrated by storage system320in this example. RAM318and storage312can each be implemented as a single storage device but can also be implemented across multiple storage devices or sub-systems. RAM318and storage312can each comprise additional elements, such as controllers, capable of communicating with processing circuitry311. In some implementations, the storage media can be a non-transitory storage media. In some implementations, at least a portion of the storage media can be transitory. It should be understood that in no case are the storage media propagated signals.

Software stored on or in RAM318or storage312can comprise computer program instructions, firmware, or some other form of machine-readable processing instructions having processes that, when executed by a processing system, direct cache node300to operate as described herein (e.g., as an edge cache node or as an transitional cache node). In such non-limiting examples, software can drive cache node300to receive requests for original or modified content, determine whether requested content is stored in cache node300, retrieve and/or receive content from origin servers, transfer content to end user devices, edge cache nodes and/or transitional cache nodes, evaluate transitional information, perform various edge cache node functions, transitional cache node functions (e.g., data transcoding, data transformation, image compression, re-writing content, threat detection and/or mitigation), scan HTML and/or other files, edit HTML files and/or other files, manage data storage systems for handling and storing content, among other operations. The software can also include user software applications. The software can be implemented as a single application or as multiple applications. In general, the software can, when loaded into a processing system and executed, transform the processing system from a general-purpose device into a special-purpose device customized to operate as an edge cache node or an transitional cache node as described herein.

RAM space380illustrates a detailed view of an exemplary configuration of RAM318. It should be understood that different configurations are possible. RAM space380includes applications330, operating system (OS)340, and content RAM cache350. Content RAM cache350includes RAM space (e.g., dynamic random access memory (DRAM)) for temporary storage of content.

Applications330include content interface331, configuration interface332, transitional caching module333, and content caching application334. Content caching application334handles caching of content (both origin content and content that has been modified or is undergoing modification) and management of storage spaces, such as content RAM cache350and storage space355, as well as exchanges involving content, data, and instructions via content interface331, configuration interface332, and transitional caching module333. Content caching application334can comprise a custom application, Varnish caching software, hypertext transfer protocol (HTTP) accelerator software, or other content caching and storage applications, including variations, modifications, and improvements thereof. Moreover, adjustments can be made to content caching depending on whether cache node300is used as a edge cache node or as a transitional cache node. Applications330and OS340can reside in RAM space380during execution and operation of cache node300, and can reside in system software storage space362on storage system320during a powered-off state, among other locations and states. Applications330and OS340can be loaded into RAM space380during a startup or boot procedure as described for computer operating systems and applications.

Content interface331, configuration interface332and transitional caching module333each allow interaction between and exchange of data with content caching application334. In some examples, each of content interface331, configuration interface332and transitional caching module333comprise an application programming interface (API). Content interface331allows for exchanging content for caching in cache node300by content caching application334, and can also receive instructions to purge or erase data from cache node300. Content interface331can retrieve tracking elements as well as network and web page content from origin servers for delivery to end users, as well as transferring content between edge cache nodes and transitional cache nodes. Configuration interface332allows for altering the configuration of various operational features of content caching application334. In some examples, configuration interface332comprises a scripting language interface, such as Varnish Configuration Language (VCL), Perl, PHP, JavaScript, or other scripting or interpreted language-based interfaces.

Transitional caching module333allows for controlling various operational features of content caching application334and can be configured to implement instructions regarding directing content to and from transitional cache nodes used for pre-processing, threat detection and mitigation, and other functions, for example in accordance with the description of such transitional cache node implementations discussed herein.

Content interface331, configuration interface332, and transitional caching module333can each communicate with external systems via network interface305over any associated network links. In further examples, one or more of elements331,332,333are implemented in VCL or VCL modules.

Storage system320illustrates a detailed view of an exemplary configuration of storage312. Storage system320can comprise flash memory such as NAND flash or NOR flash memory, phase change memory, magnetic memory, among other solid state storage technologies. As shown inFIG. 3, storage system320includes system software362, as well as content361stored in storage space355. As described above, system software362can be a non-volatile storage space for applications330and OS340during a powered-down state of cache node300, among other operating software. Content361includes cached content (e.g., origin content and/or modified content), such as the web content examples inFIG. 1, which can include text, data, pictures, video, audio, web pages, scripting, code, dynamic content, or other network content. Content361can also include tracking elements, such as transparent GIFs, web bugs, JavaScript tracking elements, among other tracking elements. In this example, content361includes network content and web pages associated with one or more websites, as indicated by www.gamma.gov, www.alpha.com, and www.beta.net, along with associated tracking elements380-382. The content361may include both origin content (i.e., content as received from an origin server or similar source) and modified content (i.e., content modified by an transitional cache node as described herein).

In implementations where an edge or transitional cache node consults stored data such as a database, lookup table, historical data or the like to obtain data and/or instructions concerning modification of content, as noted above with regard to some implementations, a repository of such transitional information can be used. Storage system320can also include a transitional information repository391(similar to repository191ofFIG. 1), which can be updated via historical data collected by cache node300and via instructions from authorized sources via network interface305.

Cache node300is generally intended to represent a computing system with which at least software330and340are deployed and executed in order to render or otherwise implement the operations described herein. However, cache node300can also represent any computing system on which at least software330and340can be staged and from where software330and340can be distributed, transported, downloaded, or otherwise provided to yet another computing system for deployment and execution, or yet additional distribution.

FIG. 4illustrates one or more implementations of a method of operation400for a content delivery network implementing transitional caching. A transitional cache node receives origin content (410). This origin content can be sent by an edge cache node or an origin server, for example, pre-caching origin content based on transitional information such as historical data and/or instructions (e.g., as might be stored and made available in a transitional information storage unit191in the exemplary system ofFIG. 1). An edge cache node receives an end user request for origin content (415) and sends the origin content (or the end user content request) to the transitional cache node (420). The end user request for origin content is replied to by the edge cache node (425).

Once the transitional cache node array has the origin content, modifying the origin content to generate modified content is then performed in one or more transitional cache nodes (430), in some implementations based on the transitional information (e.g., historical data, CDN instructions, origin server instructions, content provider instructions). Again, the modification (pre-processing in some implementations) of the origin content can include (as non-limiting examples) re-writing origin content in various languages, translation, transcoding data (e.g., video) to prevalent bit rates, compressing or otherwise adjusting data (e.g., images) to accommodate prevalent sizes and formats, and transforming files (e.g., CSS and JavaScript files). The generated modified content is cached in the transitional cache node or can be sent to an edge cache node in some implementations. An end user request for the modified content is then received (435) at an edge cache node (which can be the same or a different edge cache node than handled the origin content request). The modified content request is passed to the transitional cache node array (440) where the modified content is retrieved from its caching location and is then sent (445) to the edge cache node handling the modified content request. That edge cache node responds to the end user by sending the requested modified content (450) to the requester.

In one or more additional implementations of a method of operation500as illustrated inFIG. 5, a transitional cache node array can act in a threat detection and mitigation role (in addition to or in lieu of an origin content processing role). Because origin servers and the like are accessible via the Internet, they may be the subject of attacks that can include, among other things, denial of service (DoS) attacks, query floods, excessive bandwidth use, spam POSTs, SQL injection POSTs, cross-site scripting POSTs, or requests that otherwise exploit servers. Attacks can be implemented using bots used in a botnet attack. An end user request is received by an edge cache node (510) and the edge cache node passes that request to a transitional cache node array (520) for processing. The transitional cache node array processes the request (530) (e.g., by obtaining the content requested by the end user). Additionally, either sequentially or in parallel, the transitional cache node array processes the end user request to determine whether or not it is a threat to the CDN's operation and/or an origin server or the like (e.g., a DoS attack). Depending on the outcome of the threat detection and mitigation processing (540), either the content is sent responsively to the requester (550) or the threat detection and mitigation process is continued to address the potential problem (560).

FIG. 6Ais a method flow diagram illustrating aspects of one or more implementations of methods of operation600of a communication system, such as a content delivery network system. In this example edge cache node(s)113(which can, for example, be integrated together as an edge cache node array110) receive and respond to content requests from end user(s)103. Edge cache node(s)113can communicate with transitional cache node(s)133(which can, for example, be integrated together as a transitional cache node array130that can also function as a shield node array). Transitional cache node(s)133communicate with one or more origin server(s)141.

In some implementations pre-caching can be used so that origin content from origin server(s)141can be used to pre-fill storage in transitional cache node(s)133(615). Moreover, origin content can be sent from edge cache node(s)113to transitional cache node(s)133(617) to pre-cache origin content (and permit early modification of origin content to modified content in one or more transitional cache nodes).

An edge cache node receives an end user request for origin content (620). If the edge cache node has already cached the requested origin content, then the edge cache node can send that in a reply (640). If the edge cache node does not have the requested origin content, then it can obtain that requested origin content from intermediary transitional cache node(s)133(635) before sending the reply (640). In some implementations method of operation600might also implement threat detection and mitigation625if the edge cache node(s)113provides the end user origin content request to transitional cache node(s)133.

Transitional cache node(s)133modify origin content to generate modified content (645) using transitional information (e.g., as instructed or based on historical data or the like). As noted in connection with the transitional information191FIG. 1, various types of data and/or instructions may be made available for evaluation of these content modification functions. When a request from edge cache node(s)113is received by edge cache node(s)113for modified content (650), the edge cache node(s)113can then request the modified content from transitional cache node(s)133(655). If the modified content is a popular “variation” or other modification of origin content, it will be cached in transitional cache node(s)133and can be sent in a reply (660) to edge cache node(s)113. The modified content is then sent by edge cache node(s)113to edge cache node(s)113(665).

Method of operation690ofFIG. 6Bis similar to method of operation600inFIG. 6A, except that in some implementations pre-caching can be used so that origin content from origin server(s)141can be used to pre-fill storage in both of edge cache node(s)113(610) and/or transitional cache node(s)133(615). InFIG. 6Bif the edge cache node does not have the requested origin content, then it can obtain that requested origin content from origin server(s)141(630) and/or transitional cache node(s)133(635) before sending the reply (640).