US20070101061A1 - Customized content loading mechanism for portions of a web page in real time environments - Google Patents

Customized content loading mechanism for portions of a web page in real time environments Download PDF

Info

Publication number
US20070101061A1
US20070101061A1 US11/260,578 US26057805A US2007101061A1 US 20070101061 A1 US20070101061 A1 US 20070101061A1 US 26057805 A US26057805 A US 26057805A US 2007101061 A1 US2007101061 A1 US 2007101061A1
Authority
US
United States
Prior art keywords
web page
content
caching
cache
blocks
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.)
Abandoned
Application number
US11/260,578
Inventor
Guruprasad Baskaran
Kulvir Bhogal
Kanmani Nachimuthu
Lakshmi Potluri
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US11/260,578 priority Critical patent/US20070101061A1/en
Assigned to MACHINES CORPORATION, INTERNATIONAL BUSINESS reassignment MACHINES CORPORATION, INTERNATIONAL BUSINESS ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: POTLURI, LAKSHMI N., NACHIMUTHU, KANMANI, BHOGAL, KULVIR SINGH, BASKARAN, GURUPRASAD
Publication of US20070101061A1 publication Critical patent/US20070101061A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: POTLURI, LAKSHMI N, NACHIMUTHU, KANMANI, BHOGAL, KULVIR S, BASKARAN, GURUPRASAD
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Definitions

  • the present invention relates generally to an improved system and method for loading webpage content. More specifically, the present invention is directed to a system and method for customized content loading of portions of Web pages in real time environments.
  • the World Wide Web a service of the Internet, has evolved from being a repository of static files (Hypertext Markup Language (HTML), Graphic Interchange Format (GIF) and the like) to a very dynamic system with Web sites that span the gamut of possibilities, from multi-media sites that broadcast music on demand to e-commerce Web sites linking consumers and businesses or businesses to other businesses.
  • HTML Hypertext Markup Language
  • GIF Graphic Interchange Format
  • This evolution in usage there has been a corresponding change in the nature of the content served by Web sites. Indeed, an increasing number of Web pages served by Web sites, especially e-commerce Web sites and portals, are dynamically generated.
  • the program or application logic that generates a dynamic Web page typically must access various data sources, user profile information and complex business rules to generate the Web page. Quite often, generating dynamic pages requires querying data from data-sources such as relational databases (catalog information), or processing information feeds (like a stock quote feed, for example), which add to the cost of page generation.
  • Web sites have resorted to caching.
  • the premise underlying caching is that in many cases, the content of dynamically generated pages does not change very frequently, thereby allowing the accessed pages to be cached.
  • the server caches (i.e. locally stores for later retrieval) copies of such dynamically generated Web pages.
  • HTTP Hypertext Transfer Protocol
  • a client sends a Hypertext Transfer Protocol (HTTP) request for a Web page by, for example, clicking on a hyperlink or by specifying a Universal Resource Locator (URL).
  • HTTP Hypertext Transfer Protocol
  • URL Universal Resource Locator
  • step S 18 if the requested page is indeed present in the cache and if the response page is still valid, the page is extracted from the cache and sent to the client, as shown at S 17 . If the entire requested page is not present in the cache or is present but invalid (stale), application logic and/or the Web page's script is executed, as shown at S 14 . Executing the application logic and/or script may require the server to access data sources such as databases or information feeds, as called for by step S 15 . Only thereafter may the requested Web page be dynamically generated and sent to the client, as specified in steps S 16 and S 17 . A step of caching the just-generated full page in memory may also be carried out.
  • This mechanism works very well as long as the dynamically generated pages can be cached efficiently (i.e., they are not invalidated very frequently), and the cost of servicing the page from the cache is less than the cost of re-generating the page again.
  • a Web server uses fewer resources, especially central processing unit (CPU) resources to service a client's HTTP request.
  • CPU central processing unit
  • the ability to cache and to efficiently retrieve cached pages improves the server's performance (reduced response time) as well as its capacity to acceptably accommodate a greater number of users than it would otherwise have been able to serve without resorting to caching.
  • This type of caching is termed “full page caching.”
  • This terminology reflects the nature of this form of caching wherein the cache memory contains complete HTML responses, i.e. entire Web pages.
  • an entire Web page corresponds to a single HTTP request. Note that this differs from a Web screen page displayed on a computer screen.
  • Web screen pages may be composed of one or more Web pages independently requested by the logic that generates the display of Web screen pages on computer screens.
  • Full page caching may improve a Web site's overall capacity to handle user traffic.
  • this solution is limited in many cases, as the data sources for such dynamically generated pages may change very frequently or unpredictably, making it difficult to positively determine the current validity of the cached page.
  • a Web page refers to more than one data source. Since the granularity of caching is the entire page, changes to data from any one of the data sources necessarily results in the invalidation of the entire page, even if the data originating from the other data sources has not changed. This problem is further exacerbated when one or more of the data sources changes very frequently. Indeed, if the Web page's data sources change very frequently, the cost of caching and frequently invalidating the cached entry may be greater than the cost of dynamically generating a new page to service each HTTP request. Because of these problems and the fear of serving stale pages, many Web sites have abandoned full page caching in favor of dynamically generating pages for each incoming request, despite the cost of doing so.
  • Agrawal et al. describes a system in which Web content, e.g., a Web page, is broken down into cacheable blocks of content in the code for the Web page, e.g., HTML. Each cacheable block of content has an associated caching properties including an expiration time and is treated as static data until it expires. Some blocks may have shorter or longer expiration times than other blocks.
  • the caching properties are identified using a cache tag library in Java Server Pages (JSPs).
  • JSPs Java Server Pages
  • special JSP tag extensions may be defined that allow application developers to specify the caching properties of the constituent blocks in a Web page.
  • the Agrawal et al. mechanism handles cacheable blocks in Web pages from the server side using JSPs, ASPs, or other server side scripting mechanisms.
  • the cache properties of the blocks are used to maintain a server side cache memory, i.e. a cache memory that is directly accessible by the server but is not directly accessible by a client device.
  • a local copy of the content generated by each of the cached blocks is made in the server before passing the executed block on to the output stream to be assembled with the other constituent blocks into the requested Web page.
  • This local copy may then be added to the server side cache and identified by a specific special tag attribute.
  • the cached block in the server side cache may be retrieved from the server side cache, if it is still present therein. If one or more of the constituent blocks of the requested page are present in the server side cache, the retrieved block may be used to assemble the requested page if the cached block is still valid instead of redundantly re-executing the code to generate the block.
  • the caching attributes of cacheable blocks of a Web page are used by the mechanism of Agrawal et al. to control the generation of content to be placed on an output stream, i.e. a stream from the server to the client device. Accordingly, the caching attributes of the cacheable blocks of the Web page are established by the server application and/or Web page developers. There is no mechanism described for controlling client side caching of blocks of Web page content.
  • caching attributes of Agrawal et al. are not used to control a client side retrieval of content.
  • server side caching of Web page content is a different matter from that of client side caching of Web page content. From the server perspective, caching simply involves determining whether the portion of content is present in the server side cache and is valid. If not, the portion of content is regenerated and placed in the server side cache. From the client side perspective, caching involves determining if the requested portion of content is present in the client side local cache and is valid and if not, sending a request for the Web content to an appropriate source of the content. When the Web content is received, a copy of the Web content may then be placed in a client side local cache for future requests.
  • Client side caching benefits the speed of retrieval even when the client retrieves pages from a server that does not utilize caching. Client side caching reduces the overload on the network since pages that are cached locally may be retrieved locally and a request need not be sent over the network. Server side caching benefits the speed of generation of Web content at the server side but has no benefit to the overload on the network.
  • the caching attributes of Agrawal are fixed attributes that are applied regardless of the client device that receives the Web page.
  • a first client device that may not have as many resources as a second client device will still have the same fixed caching attributes applied to the Web content retrieved by the first client device as to the Web content retrieved by the second client device.
  • the present invention provides a system, computer program product, and method for associating blocks of Web page content with caching properties.
  • the caching properties may include global caching properties for all blocks of a Web page and/or individual caching properties for each individual block of the Web page.
  • the individual caching properties may be different for each block of the same Web page.
  • the caching properties may be identified within the code of the Web page content itself.
  • the caching properties may be provided as meta tags within the markup language code of Web page content.
  • the caching properties identify a valid time period in which the corresponding block or blocks of Web page content are to remain valid within a client and/or proxy device cache.
  • such caching properties are linked to client device characteristics. For example, the manner by which blocks of the Web page content are cached may be made dependent upon the speed of the processor in the client device or other characteristics of the client device.
  • the meta tags may enable local caching of blocks of Web page content for various device formats.
  • various versions of a cached block of a Web page may be identified in the caching properties for handheld Web browsing devices, e.g., wireless telephones, handheld game devices, wristwatches, or any other type of device that may require a different format from that of a standard client computing device for which the Web page content was originally developed.
  • Such local caching properties may include, for example, cache size attributes, display size attributes, different valid time periods for different types of devices, and the like.
  • Such local caching in different formats for different devices provides for quicker retrieval of Web page content that is already formatted in the correct format for the particular device.
  • the caching of Web page content is controlled by a client device or a proxy device when parsing and executing the code of the Web page.
  • the proxy device's cache is checked for the block of Web page content. If the block of Web page content is valid in the proxy device's cache, then the block of Web page content is retrieved from the proxy device's cache and provided to the client device, where it is placed in the client device's cache in accordance with the caching properties. In this way, a single Web page may be rendered on a client device using blocks obtained from a local client device cache, blocks obtained from a proxy device's cache, and blocks of Web page content obtained from a source of the Web page content.
  • blocks of Web page content may be used to render other Web pages that may use the same blocks even if the other Web pages do not have block level caching of Web page content enabled.
  • a first Web page having blocks A, B, C and D, and which has block level caching enabled may be received in a client device.
  • the blocks A, B, C and D may be stored in a local cache.
  • a second Web page may be requested by the client device that also includes a block that is common to the first Web page, e.g., block A.
  • intelligent processing in the client device may determine that block A is present in the local cache and utilize the locally cached block A to render the second Web page.
  • the present invention provides a user interface for displaying the code associated with a Web page such that a user may select blocks of the code to which block level caching is to be applied.
  • this user interface provides a convenient mechanism by which a user may designate the caching properties for individual blocks of code of a Web page.
  • block level caching property meta tags may be automatically generated and inserted into the code of the Web page.
  • a method, apparatus and computer program product are provided in which code for a portion of a first Web page is received, where the code breaks the portion of the first Web page into blocks of Web page content, and one or more of the blocks of Web page content have associated caching properties identified in the code.
  • the code is parsed for the portion of the first Web page to identify the blocks of Web page content and their associated caching properties.
  • Content data corresponding to the blocks of Web page content is cached, in a client side data processing system cache, based on the associated caching properties. At least two blocks of Web page content have different caching properties and at least two portions of content data corresponding to the at least two blocks of Web page content are cached using the different caching properties.
  • a request may be received to retrieve a second Web page, different from the first Web page, wherein a first block of Web page content in the second Web page is the same as a second block of Web page content in the first Web page.
  • a determination may be made as to whether a first portion of content data, corresponding to the first block of Web page content in the second Web page that is the same as the second block of Web page content in the first Web page, is present in the client side data processing system cache.
  • the first portion of content data may be retrieved from the client side data processing system cache if the first portion of content data is present in the client side data processing system cache.
  • the second Web page may be rendered using the first portion of content data retrieved from the client side data processing system cache.
  • a determination may be made as to whether the first portion of content data is valid in the client side data processing system cache.
  • a request for the first portion of content data may be made from a source computing device if the first portion of content data is not present in the client side data processing system cache or is not valid in the client side data processing system cache.
  • the second Web page may be rendered on a client device using the first portion of content data requested from the source computing device.
  • the first Web page may have block level caching enabled and the second Web page may not have block level caching enabled.
  • the client side data processing system cache may be a local cache of a client device.
  • the client side data processing system cache may be a cache of a proxy device coupled to a client device that originated a request for the first Web page.
  • the associated caching properties may have a conditional requirement that identifies an operational characteristic that is required before the caching property is applied to content data for the corresponding block of Web page content.
  • the associated caching properties are provided in meta tags within the code of the portion of the Web page.
  • the request to retrieve the second Web page may originate from a different client device than a client device that requested the first Web page.
  • a determination may be made as to whether the first portion of content data is present in a client side proxy device coupled to the client device if the first portion of content data is not present in the local cache of the client device.
  • the first portion of content data may be retrieved from the client side proxy device if the first portion of content data is present in the client side proxy device.
  • the second Web page may be rendered on the client device using the first portion of content data retrieved from the client side proxy device.
  • operational characteristic information may be retrieved for the client side data processing system and compared to conditional requirements. A determination may be made as to whether the caching property is to be applied to content data for the corresponding block of Web page content based on results of the comparison.
  • the computer program product of the present invention may comprise a computer usable medium having a computer readable program.
  • the computer readable program when executed on a computer, may cause the computer to perform the various operations described above.
  • the apparatus according to one exemplary embodiment of the present invention comprises a processor, a memory coupled to the processor, and a cache storage coupled to the processor.
  • the memory may contain instructions which, when executed by the processor, causes the processor to perform the various operations described above.
  • FIG. 1 is a diagram illustrating a prior art mechanism for handling Web page content requests from a client device
  • FIG. 2 is an exemplary block diagram of a network data processing system in which aspects of the present invention may be implemented
  • FIG. 3 is an exemplary block diagram of a server computing device in which aspects of the present invention may be implemented
  • FIG. 4 is an exemplary block diagram of a client computing device in which aspects of the present invention may be implemented
  • FIG. 5 is an exemplary diagram illustrating examples of caching property tags in accordance with one exemplary embodiment of the present invention.
  • FIG. 6 is an exemplary diagram for illustrating an operation of the present invention based on caching properties provided as part of code for blocks of Web page content;
  • FIG. 7 is an exemplary diagram illustrating a series of operations for rendering Web page content on a client computing device in accordance with one exemplary embodiment of the present invention
  • FIG. 8 is an exemplary diagram illustrating a graphical user interface through which block level caching may be enabled in accordance with one exemplary embodiment of the present invention
  • FIG. 9 is a flowchart outlining an exemplary operation of the present invention when caching a block of Web page content.
  • FIG. 10 is a flowchart outlining an exemplary operation of the present invention when rendering a block of Web page content on a client computing device.
  • the present invention provides a mechanism for caching blocks of Web page content based on global and individual block caching properties identified in the code of the blocks of Web page content. As such, the present invention is especially well suited for distributed data processing environments, such as the Internet.
  • FIGS. 2-4 are provided as exemplary of data processing environments and devices in which the aspects of the present invention may be implemented.
  • the data processing environments and devices shown in FIGS. 2-4 are only exemplary and are not intended to state or imply any limitation as to the type or configuration of data processing environment or computing devices in which the aspects of the present invention may be implemented. Many modifications to the data processing environments and computing devices may be made without departing from the spirit and scope of the present invention.
  • FIG. 2 depicts a pictorial representation of a network of data processing systems in which the present invention may be implemented.
  • Network data processing system 200 is a network of computers in which the present invention may be implemented.
  • Network data processing system 200 contains a network 202 , which is the medium used to provide communications links between various devices and computers connected together within network data processing system 200 .
  • Network 202 may include connections, such as wire, wireless communication links, or fiber optic cables.
  • server 204 is connected to network 202 along with storage unit 206 .
  • clients 208 , 210 , and 212 are connected to network 202 .
  • These clients 208 , 210 , and 212 may be, for example, personal computers or network computers.
  • server 204 provides data, such as boot files, operating system images, and applications to clients 208 - 212 .
  • Clients 208 , 210 , and 212 are clients to server 204 .
  • Network data processing system 200 may include additional servers, clients, and other devices not shown.
  • network data processing system 200 is the Internet with network 202 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another.
  • TCP/IP Transmission Control Protocol/Internet Protocol
  • At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, government, educational and other computer systems that route data and messages.
  • network data processing system 200 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN).
  • FIG. 2 is intended as an example, and not as an architectural limitation for the present invention.
  • Data processing system 300 may be a symmetric multiprocessor (SMP) system including a plurality of processors 302 and 304 connected to system bus 306 . Alternatively, a single processor system may be employed. Also connected to system bus 306 is memory controller/cache 308 , which provides an interface to local memory 309 . I/O Bus Bridge 310 is connected to system bus 306 and provides an interface to I/O bus 312 . Memory controller/cache 308 and I/O Bus Bridge 310 may be integrated as depicted.
  • SMP symmetric multiprocessor
  • Peripheral component interconnect (PCI) bus bridge 314 connected to I/O bus 312 provides an interface to PCI local bus 316 .
  • PCI Peripheral component interconnect
  • a number of modems may be connected to PCI local bus 316 .
  • Typical PCI bus implementations will support four PCI expansion slots or add-in connectors.
  • Communications links to clients 208 - 212 in FIG. 2 may be provided through modem 318 and network adapter 320 connected to PCI local bus 316 through add-in connectors.
  • Additional PCI bus bridges 322 and 324 provide interfaces for additional PCI local buses 326 and 328 , from which additional modems or network adapters may be supported. In this manner, data processing system 300 allows connections to multiple network computers.
  • a memory-mapped graphics adapter 330 and hard disk 332 may also be connected to I/O bus 312 as depicted, either directly or indirectly.
  • FIG. 3 may vary.
  • other peripheral devices such as optical disk drives and the like, also may be used in addition to or in place of the hardware depicted.
  • the depicted example is not meant to imply architectural limitations with respect to the present invention.
  • the data processing system depicted in FIG. 3 may be, for example, an IBM eServer pSeries system, a product of International Business Machines Corporation in Armonk, N.Y., running the Advanced Interactive Executive (AIX) operating system or LINUX operating system.
  • AIX Advanced Interactive Executive
  • Data processing system 400 is an example of a client computer.
  • Data processing system 400 employs a peripheral component interconnect (PCI) local bus architecture.
  • PCI peripheral component interconnect
  • AGP Accelerated Graphics Port
  • ISA Industry Standard Architecture
  • Processor 402 and main memory 404 are connected to PCI local bus 406 through PCI Bridge 408 .
  • PCI Bridge 408 also may include an integrated memory controller and cache memory for processor 402 . Additional connections to PCI local bus 406 may be made through direct component interconnection or through add-in boards.
  • local area network (LAN) adapter 410 small computer system interface (SCSI) host bus adapter 412 , and expansion bus interface 414 are connected to PCI local bus 406 by direct component connection.
  • audio adapter 416 graphics adapter 418 , and audio/video adapter 319 are connected to PCI local bus 406 by add-in boards inserted into expansion slots.
  • Expansion bus interface 414 provides a connection for a keyboard and mouse adapter 420 , modem 422 , and additional memory 424 .
  • SCSI host bus adapter 412 provides a connection for hard disk drive 426 , tape drive 428 , and CD-ROM drive 430 .
  • Typical PCI local bus implementations will support three or four PCI expansion slots or add-in connectors.
  • An operating system runs on processor 402 and is used to coordinate and provide control of various components within data processing system 400 in FIG. 4 .
  • the operating system may be a commercially available operating system, such as Windows XP, which is available from Microsoft Corporation.
  • An object oriented programming system such as Java may run in conjunction with the operating system and provide calls to the operating system from Java programs or applications executing on data processing system 400 . “Java” is a trademark of Sun Microsystems, Inc. Instructions for the operating system, the object-oriented programming system, and applications or programs are located on storage devices, such as hard disk drive 426 , and may be loaded into main memory 404 for execution by processor 402 .
  • FIG. 4 may vary depending on the implementation.
  • Other internal hardware or peripheral devices such as flash read-only memory (ROM), equivalent nonvolatile memory, or optical disk drives and the like, may be used in addition to or in place of the hardware depicted in FIG. 4 .
  • the processes of the present invention may be applied to a multiprocessor data processing system.
  • data processing system 400 may be a stand-alone system configured to be bootable without relying on some type of network communication interfaces
  • data processing system 400 may be a personal digital assistant (PDA) device, which is configured with ROM and/or flash ROM in order to provide non-volatile memory for storing operating system files and/or user-generated data.
  • PDA personal digital assistant
  • data processing system 400 also may be a notebook computer or hand held computer in addition to taking the form of a PDA.
  • data processing system 400 also may be a kiosk or a Web appliance.
  • a server computing device such as server 204 in FIG. 2
  • the server 204 provides at least one portion of a Web page to a client device, such as client device 208 .
  • the server 204 provides a portion of Web page content that has associated caching properties.
  • the portion of Web page content is either a single block of a Web page, or multiple blocks of a Web page.
  • the Web page itself is made up of a plurality of blocks of Web page content which may all be provided by server 204 or may be provided by multiple servers or sources of Web page content.
  • the server 204 provides a portion of Web page content directly to the client device 208 which may cache the portion of Web page content in a local cache of the client device 208 based on the associated caching properties of the portion of Web page content.
  • a client side proxy computing device 220 such as a client side proxy server, may be provided through which the portion of Web page content may be provided to the client device 208 .
  • client side is meant to refer to the fact that the proxy device 220 is separated from the server 204 by a portion of a network 202 , i.e. the proxy device 220 is not directly accessible by the server 204 and must be accessed via a network.
  • the client device 208 may directly access the proxy device 220 without having to go through the network, although a local area network (not shown), different from the network 202 to which the server 204 is coupled, may be required for client device 208 to access the proxy device.
  • a local area network not shown
  • the client side proxy server 220 may itself cache the portions of Web page content based on the caching properties associated with the blocks of Web page content within the portions of Web page content. Multiple client devices may make use of the same client side proxy device 220 such that portions of Web page content requested by one client device, and cached in the proxy device 220 , may be provided from the proxy device's cache to other client devices that request the same portion of Web page content.
  • the caching properties may include global caching properties for all blocks of a Web page and/or individual caching properties for individual block of the Web page.
  • the individual caching properties may be different for each block of the same Web page.
  • the caching properties may be identified within the code of the Web page content itself.
  • the caching properties may be provided as meta tags within the markup language code of the Web page content.
  • the caching properties identify a valid time period in which the corresponding block or blocks of Web page content are to remain valid within a client and/or proxy device cache.
  • such caching properties are linked to client device characteristics. For example, the manner by which blocks of the Web page content are cached may be made dependent upon the speed of the processor in the client device or other characteristics of the client device.
  • the meta tags may enable local caching of blocks of Web page content for various device formats.
  • various versions of a cached block of a Web page may be identified in the caching properties for handheld Web browsing devices, e.g., wireless telephones, handheld game devices, wristwatches, or any other type of device that may require a different format from that of a standard client computing device for which the Web page content was originally developed.
  • Such local caching properties may include, for example, cache size attributes, display size attributes, different valid time periods for different types of devices, and the like.
  • Such local caching in different formats for different devices provides for quicker retrieval of Web page content that is already formatted in the correct format for the particular device.
  • the caching of Web page content is controlled on the client device and proxy device when parsing and executing the code of the Web page.
  • the proxy device's cache is checked for the block of Web page content. If the block of Web page content is valid in the proxy device's cache, then the block of Web page content is retrieved from the proxy device's cache and provided to the client device, where it is placed in the client device's cache in accordance with the caching properties.
  • a single Web page may be rendered on a client device using blocks obtained from a local client device cache, blocks obtained from a proxy device's cache, and blocks of Web page content obtained from a source of the Web page content, if necessary.
  • FIG. 5 is an exemplary diagram illustrating examples of caching property tags in accordance with one exemplary embodiment of the present invention.
  • the present invention provides a mechanism for providing caching properties in code of a portion of Web page content.
  • the present invention provides mechanisms for caching portions of Web page content on client devices and client proxy devices in accordance with these caching properties set forth in the code of the portion of Web page content.
  • the present invention provides mechanisms for controlling the retrieval of portions of Web page content at a client device based on such caching properties provided in the code of the portions of Web page content.
  • the example portion of Web page content depicted in FIG. 5 makes use of the HyperText Markup Language (HTML) as the language in which the portion of Web page content is coded. While the depicted example shows an HTML based portion of Web page content, the present invention is not limited to such. Rather, other programming languages, such as other markup languages including Extensible Markup Language (XML), Extensible HTML (XHTML), Standard Generalized Markup Language (SGML), and the like, may be used without departing from the spirit and scope of the present invention.
  • XML Extensible Markup Language
  • XHTML Extensible HTML
  • SGML Standard Generalized Markup Language
  • the example code shown in FIG. 5 is only exemplary and is not intended to state or imply any limitation with regard to the manner by which caching properties may be provided in code of a portion of Web page content.
  • the portion of Web page content 500 includes a header section 510 and a body section 520 that may include one or more blocks 530 and 535 of Web page content.
  • the present invention provides meta tags 540 , 550 for specifying global Web page level caching properties that identify the default caching properties for the entire portion of Web page content. These global, or default, caching properties are utilized by the client device and/or proxy device to cache blocks of the portion of Web page content 500 when separate individual block level caching properties are not specified for blocks of Web page content in the body 520 of the portion of Web page content 500 .
  • block level caching properties For example, if global caching properties are specified for the portion of Web page content, and block level caching properties are specified for a first block but not for a second block of the portion of Web page content, then block level caching properties will be applied to the first block of Web page content but global or default caching properties will be applied to the second block of Web page content.
  • conflicts may be resolved in favor of one of block level or global caching properties, depending upon the particular implementation of the present invention.
  • global caching properties are preferred over block level caching properties when a conflict is identified.
  • the global or default caching properties are designated in meta tags 540 and 550 provided in the header section 510 of the portion of Web page content 500 .
  • the meta tags 540 and 550 specify such caching properties as cache control properties, cache control types, expiration times, expiration time period designations, cache size, network bandwidth, processor speed, and the like.
  • Similar meta tags are provided in the body section 520 of the portion of Web page content 500 .
  • These meta tags are provided at a block level within body section 520 . That is, individual blocks of Web page content may be designated using tags, such as “htmlblock.” Each of these blocks of Web page content may have associated block level meta tags 560 - 580 for identifying caching properties associated with their corresponding block of Web page content. Some blocks may be designated within the body 520 of the portion of Web page content 500 but may not have associated block level caching properties specifically set forth in the code of the portion of Web page content 500 . As a result, the global or default caching properties specified in the header section 510 would be applied to such blocks of Web page content when the client device and/or proxy device process the code of the portion of Web page content 500 .
  • the meta tags 560 and 570 provide similar caching properties as those described above with regard to the global or default caching properties. That is, properties such as cache control properties, cache control types, expiration times, expiration time period designations, and the like, may be designated in block level meta tags 560 and 570 . These caching properties supersede any global or default caching properties set forth in the header section 510 of the portion of Web page content 500 , so long as a direct conflict between the two sets of caching properties is identified.
  • Meta tag 580 provides another example of a block level meta tag identifying block level caching properties that are slightly different from those of meta tags 560 and 570 .
  • the meta tag 580 shows an example in which the caching property includes a conditional requirement for the corresponding caching property to be implemented.
  • the conditional requirement is based on a characteristic of the client device and/or proxy device that is processing the code of the portion of Web page content 500 .
  • the conditional requirement is that the CPU speed of the client device and/or proxy device be categorized as “lowspeed.”
  • the actual determination as to whether a particular CPU speed is “lowspeed,” “middlespeed” or “high-speed” may be performed based on logic set forth in software and/or hardware provided in the client device and proxy device.
  • a plug-in module, applet, or other application may be provided in association with a client device's browser, or in a proxy device, that makes such determinations and processes code of Web page content in accordance with the mechanisms of the present invention and the determined characteristics of the client device/proxy device.
  • client device and/or proxy device characteristic that may be used as a basis for determining whether to implement a caching property associated with a conditional requirement.
  • Other examples may include network connection speed, cache size, available cache space, number of packets sent/received, or any other characteristic that is associated with the ability of the client/proxy device to receive and process data.
  • Other characteristics that may be used include, for example, time of day, device type (e.g., handheld web browsing device), and the like. Any type of characteristic that is representative of the client/proxy device's ability to receive and process data is intended to be within the spirit and scope of the present invention.
  • the caching property “cache 15 ” is implemented on the device.
  • “cache 15 ” corresponds to caching the block of Web page content 535 for 15 minutes.
  • an expiration time for the block of Web page content 535 may be established that is 15 minutes from a time at which the Web page content was originally transmitted by the content provider.
  • each block of Web page content may provide code for rendering corresponding Web page content on a client device.
  • code may reference sources of static and/or dynamic Web page content from which the content is to be retrieved.
  • dynamic Web page content that may be retrieved to provide a particular Web page on a client device includes stock quotes, sports scores, news stories, weather information, and the like.
  • Each of these types of content may be provided from various sources, e.g., various content provider servers, which may be identified in the code of the block of Web page content.
  • a separate request for that content is generated. This request is processed to determine whether to retrieve the content from its identified source, a local cache of the client device, a proxy device cache, or other source.
  • a local cache of the client device is first queried to determine if a valid copy of the content for the block of the Web page is present in the local cache. If not, and if a proxy device is provided, a proxy device cache is queried to determine if a valid copy of the content for the block of the Web page is present in the proxy device cache. If not, then the request is transmitted to the original source of the content for the block of the Web page so as to obtain the content for rendering the block of the Web page at the client device.
  • each block of Web page content may have its own set of block level caching properties specified in meta tags associated with the block of Web page content.
  • a single Web page may be comprised of a plurality of blocks of Web page content, each having different caching properties.
  • blocks of the Web page may be retrieved from a number of different places including a local cache of the client device, a cache in a proxy device, and various original sources of the blocks of Web page content.
  • the processes for obtaining of content for rendering blocks of a Web page may be performed in substantially a parallel manner so as to build a rendition of the Web page on the client device from the various identified blocks of Web page content identified in the code of the Web page content.
  • FIG. 6 is an exemplary diagram for illustrating an operation of the present invention based on caching properties provided as part of code for blocks of Web page content.
  • the depicted example makes use of a proxy server through which the client devices access a network.
  • the proxy server is not essential to the operation of the present invention but provides additional functionality as described hereafter.
  • the mechanisms of the present invention may be implemented in a distributed data processing system in which the client devices access web page provider and content provider systems directly via a network without a proxy server being interposed between the client devices and the network.
  • a user of client device 610 has sent a request for a particular web page 660 using a browser application provided on the client device 610 .
  • a request may be generated by the user entering, for example, a Uniform Resource Locator (URL) for the web page 660 , clicking on a hyperlink for the Web page 660 , or the like.
  • the request is routed to the Web page provider server 640 via proxy server 630 and network 645 in a manner generally known in the art.
  • the Web page 660 includes two blocks of Web page content, block A and block B, which each have separate caching properties associated with them.
  • the caching properties are considered to be caching properties that are not dependent upon any client device characteristics.
  • the caching properties may be based on characteristics of the client device 610 that is processing the Web page 660 code in the manner previously described, without departing from the spirit and scope of the present invention.
  • the Web page provider server 640 In response to receiving the request for the Web page 660 , the Web page provider server 640 sends the Web page 660 to the client device 610 via the proxy server 630 and network 645 .
  • the proxy server 630 receives the Web page 660 and processes the code and data to determine how to cache the data in accordance with the caching properties specified in the code of the Web page 660 .
  • the proxy server 630 upon receiving the code for the Web page 660 , the proxy server 630 , by way of a running application, applet, plug-in, or hardware implemented logic, parses the code for the Web page 660 , identifies meta tags associated with page level and block level caching properties, and processes content data for the blocks of the Web page 660 in accordance with the caching properties specified in the meta tags. Such processing may include the proxy server 630 requesting any required content data for blocks of the Web page 660 from content providers, such as the content data 670 for block A from server 640 and content data 675 for block B from content provider server 650 . As a result of such operations, the proxy server 630 receives and stores the content data for blocks A and B of Web page 660 in proxy cache 680 .
  • the validity attributes for the content data of Block A are set such that the content data becomes invalid after 5 minutes from the time at which the content data was transmitted to the proxy server 630 from server 640 .
  • the validity attributes for the content data 675 of Block B are set such that the content data becomes invalid after 15 minutes from the time at which the content data was transmitted to the proxy server 630 from content provider server 650 .
  • the web page 660 and content 670 are forwarded to the client device 610 that originated the request for the web page 660 .
  • the client device 610 performs similar caching operations based on the caching properties identified in the code of the web page 660 .
  • the client device 610 stores the content data 670 for block A in a local cache 685 and sets the validity attributes for the content data 670 for Block A so that the content data 670 becomes invalid after 5 minutes from the time it is received in the client device 610 .
  • the client device 610 may also issue a request for the content data 675 for block B to content provider server 650 and store the received content data 675 in local cache 685 with validity attributes set so that the content data 675 becomes invalid after 15 minutes from the time that it is received in the client device 610 .
  • the client device 610 may render the web page 690 on the client device using the content data for blocks A and B.
  • client device 620 issues a request for the same Web page 660 and that client device 620 also accesses network 645 via the proxy server 630 .
  • the code for Web page 660 is received by client device 620 from the Web page provider 640 .
  • the code may be provided to the client device 620 by proxy server 630 , or from a local cache (not shown) if the Web page has been previously requested by the client device 620 .
  • the application, plug-in, applet, or the like, on the client device 620 parses the code of the Web page 660 and attempts to retrieve the content data for each of the blocks of Web page content.
  • the client device 620 For each block of Web page content, the client device 620 first looks at its own local cache to determine if the local cache stores a valid copy of the content data for rendering the block of Web page content. If not, then a request for content data for the block of the Web page content is sent to the proxy server 630 . The proxy server 630 looks at its own proxy cache 680 to determine if it has a valid copy of the content data for the block of the Web page content. If not, then the request is forwarded to the appropriate content data provider, e.g., content provider server 650 .
  • the appropriate content data provider e.g., content provider server 650 .
  • the validity of the various blocks of Web page 660 is determined according to the caching properties specified in the code of the Web page 660 when it was originally received and stored in the cache, e.g. proxy cache 680 and client device local cache. Since neither block A nor block B have their content data stored in a local cache of client device 620 , a determination is made as to whether the proxy server 630 has valid content data for these blocks in proxy cache 680 .
  • the present request from client device 620 occurs 10 minutes after the time at which the content data for blocks A and B is transmitted to proxy cache 680 .
  • the content data for block A is invalid in proxy cache 680 .
  • the content data for block B in proxy cache 680 is still valid.
  • the request for the content data for block A is forwarded to Web page provider server 640 to retrieve content data 670 and the content data for block B is sent from the proxy cache 680 to the client device 620 .
  • the client device 620 renders the web page 695 on client device 620 using the content data 670 for block A as obtained from the web page provider server 640 and the content data for block B from proxy cache 680 .
  • the content data for block B in proxy cache 680 will expire at the same time as the copy of this same content data in local cache 685 .
  • the content data for block A will remain valid in proxy cache 680 even after the content data for block A in local cache 685 expires due to the subsequent request for the content data for block A made by client device 620 .
  • FIG. 7 is an exemplary diagram illustrating a series of operations for rendering Web page content on a client computing device in accordance with one exemplary embodiment of the present invention.
  • a client device 710 receives a request to retrieve a Web page, such as by way of a user's entry of a URL or clicking of a hyperlink, for example, the client device 710 first queries its local cache 720 for the content to render the Web page in a browser application of the client device 710 .
  • the operation shown in FIG. 7 is performed for each block of Web page content within the requested Web page and thus, only a single block will be addressed in this description.
  • the operations described may be repeated for each block of Web page content until all of the necessary content data for rendering the Web page at the client device 710 is made available to the client device 710 .
  • the querying of the local cache 720 results in either the block of Web page content being within the local cache 720 and being valid, i.e. it has not expired, the block of Web page content being within the local cache 720 but being invalid, or the block of Web page content not being within the local cache 720 . If the block of Web page content is within the local cache 720 and valid, then the response from the local cache 720 may include the content data for that block of Web page content, which the browser application may then use to render the Web page on the client device 710 .
  • the client device 710 queries the proxy server cache 730 for the content data corresponding to the block of Web page content. Again, the content data for the block may be in the proxy server cache 730 and valid, in the proxy server cache 730 and invalid, or not in the proxy server cache 730 . If the content data for the block is in the proxy server cache 730 and is valid, then it is returned to the client device 710 for use in rendering the Web page. Moreover, the proxy server cache 730 may be refreshed again when the client device 710 uses the data stored in the proxy server cache 730 . If the content data is either in the proxy server cache 730 and invalid or not in the proxy server cache 730 , then the client device 710 sends a request to the content provider server 740 that is the source of the content data for that block of Web page content.
  • the content provider server 740 sends the requested content data to the client device 710
  • the content data is passed through the proxy server.
  • the proxy server performs the necessary operations, as previously discussed, to parse the caching property meta tags in the content and store a copy of the content data for the block of Web page content in the proxy server cache 730 in accordance with these caching property meta tags.
  • a similar operation is performed at the client device 710 to store a copy of the content data for the block of Web page content in the local cache 720 .
  • the present invention provides a client side block level caching mechanism, the performance gains obtainable from client side cached portions of a Web page may be achievable even if the Web page that is being requested does not enable block level caching.
  • intelligent logic may be provided in conjunction with the client side browser application, such as via a plug-in application, an applet, or the like, to analyze requested Web pages to determine what blocks of content are present in the Web pages that may be retrieved from a local cache or from a client side proxy cache device.
  • blocks of Web page content which have been cached in a local cache or proxy device's cache may be used to render other Web pages that may use the same blocks even if the other Web pages do not have block level caching of Web page content enabled.
  • a first Web page having blocks A, B, C and D, and which has block level caching enabled may be received in a client device.
  • the blocks A, B, C and D may be stored in a local cache and/or a proxy device's cache.
  • a second Web page may be requested by the client device, or a different client device if a proxy device is utilized, that also includes a block that is common to the first Web page, e.g., block A.
  • the second Web page may not have block level caching enabled, intelligent processing in the client device may determine that block A is present in the local cache and utilize the locally cached block A to render the second Web page.
  • This intelligent processing may involve parsing and analyzing the code of the requested Web page to identify blocks within the code of the requested Web page. Searching a local cache and/or proxy device's cache to determine if the identified blocks are present and valid in either the local cache or the proxy device's cache and retrieving those cached versions of the Web page blocks if they are present and valid. If the blocks are not present, then the original source of that portion of Web page content may be accessed to obtain the requested Web page content. All of this processing may be performed despite the fact that the requested Web page itself does not enable block level client side caching of Web page content.
  • FIG. 8 is an exemplary diagram illustrating a graphical user interface through which block level caching may be enabled in accordance with one exemplary embodiment of the present invention.
  • the graphical user interface includes a plurality of tool interfaces 810 - 850 for specifying different types of global and/or block level caching properties.
  • a Web page content code display portion 860 is provided in which the code for particular Web page content is displayed.
  • a user may select portions of the Web page content to be a block of Web page content using a user interface, such as a mouse and associated displayed cursor.
  • a user may highlight a portion of the Web page content code to be a block of Web page content.
  • the user may then select one or more tool interfaces 810 - 850 for associating a block level caching property to be applied to the highlighted portion of Web page content code.
  • the selection of one or more tool interfaces 810 - 850 may result in a subsequent graphical user interface window 870 being displayed for entry of particular values to be associated with the selected block level caching property.
  • an expiration time tool interface 820 may be used to generate a block level caching meta tag to be inserted into the Web page content code and the window 870 may be used to allow a user to input the expiration time period value to be associated with the expiration time meta tag.
  • the user may repeatedly highlight portions of Web page content and select tool interfaces to apply various global and/or block level caching properties to various blocks of the Web page content.
  • the user may select a “save” interface tool 880 for saving a modified version of the Web page content code in which meta tags and corresponding caching property values are inserted in accordance with the user's selections using the graphical user interface. In this way, Web page content code is generated having global and/or block level caching properties inserted therein.
  • FIG. 8 is only exemplary and many other types of interfaces may be utilized with the present invention without departing from the spirit and scope of the present invention.
  • other tool interfaces other than those shown in FIG. 8 may be used in addition to, or in replacement of, those depicted.
  • various pull down menus, popup menus, or other known graphical user interface mechanisms may be used as part of the graphical user interface of FIG. 8 without departing from the spirit and scope of the present invention.
  • FIGS. 9 and 10 are flowcharts outlining exemplary operations of the present invention. It will be understood that each block, and combination of blocks, of the flowchart illustration in FIGS. 9 and 10 can be implemented by computer program instructions. These computer program instructions may be provided to a processor or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the processor or other programmable data processing apparatus create means for implementing the functions specified in the flowchart block or blocks. These computer program instructions may also be stored in a computer-readable memory or storage medium that can direct a processor or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory or storage medium produce an article of manufacture including instruction means which implement the functions specified in the flowchart block or blocks.
  • blocks of the flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the flowchart illustrations, and combinations of blocks in the flowchart illustrations, can be implemented by special purpose hardware-based computer systems which perform the specified functions or steps, or by combinations of special purpose hardware and computer instructions.
  • FIG. 9 is a flowchart outlining an exemplary operation of the present invention when caching a block of Web page content.
  • the operations shown in FIG. 8 may be performed, for example, at a client device, a proxy device, or the like.
  • the operation starts by receiving code for a portion of Web page content (step 910 ).
  • the code is parsed to identify meta tags within the code (step 920 ).
  • the meta tags are then processed to identify global and block level caching properties for the blocks of Web page content within the portion of Web page content (step 930 ).
  • a determination is made as to whether any of the meta tags have conditional requirements (step 940 ).
  • step 950 information regarding operational characteristics of the present computing device that is processing the code for the portion of Web page content is retrieved (step 950 ).
  • This information may be obtained, for example, from a configuration file, a performance monitoring application, or the like.
  • the operational characteristic information is then compared to the conditional requirement for the meta tags having conditional requirements. A determination is made as to whether the corresponding caching property is to be applied, for each meta tag having a conditional requirement, based on the comparison (step 960 ). If so, then the corresponding caching property is selected for use in caching the associated block of Web page content (step 970 ).
  • step 980 a determination is made as to whether there are any conflicts between global and block level caching properties (step 980 ). If so, then these conflicts are resolved in favor of the global caching properties such that the global caching properties are applied to the blocks of Web page content having the conflicting block level caching properties (step 990 ). Thereafter, or if there are no conflicts, the content data for the blocks of Web page content are retrieved and the various caching properties for each block of Web page content in the portion of Web page content are applied to content data for the corresponding blocks (step 995 ). The operation then ends.
  • FIG. 10 is a flowchart outlining an exemplary operation of the present invention when rendering a block of Web page content on a client computing device. It should be appreciated that the operation outlined in FIG. 10 is for one block of Web page content. The operation may be repeated for each block of Web page content required to render the requested Web page.
  • the operation starts by querying a local client device cache for the content data for the block of Web page content (step 1010 ). A determination is made as to whether a valid copy of the content data is present in the local cache (step 1020 ). If so, then the content data is retrieved and used by the client device to render that block of the Web page content on the client device (step 1030 ).
  • a query is sent to a proxy device to request the content data from the proxy device's cache (step 1040 ).
  • a determination is made as to whether a valid copy of the content data is present in the proxy device's cache (step 1050 ). If so, then the content data is sent to the client device where a copy is placed in the local cache and the content data is used to render the block of Web page content on the client device (step 1060 ). It should be appreciated that, in storing a copy of the content data in the local cache, the caching properties specified in the code of the Web page will ensure consistency between the client device and the proxy device caches since expiration times are based on the time when the content data was transmitted by the content providers.
  • a request is generated and sent to the content provider that provides the content data for the block of Web page content (step 1070 ).
  • the code of the Web page for the block will identify the content provider, such as by network address, URL, or the like, and this may be used to send the request for the content data.
  • the content data is used to render the block of Web page content (step 1090 ) and a copy of the content data is stored in a local cache in the manner outlined above in FIG. 9 (step 1095 ). The operation then terminates.
  • the present invention provides mechanisms for controlling the caching of blocks of Web page content in client side caches that may be part of a client device, proxy device, or the like.
  • the present invention further provides mechanisms for setting forth conditional requirements for the application of caching properties based on client side device operational characteristics.
  • the present invention provides a mechanism for defining global and block level caching properties and resolving conflicts between such caching properties.
  • the present invention provides mechanisms for building a Web page from content data obtained from various client side caches and a server side content provider based on content data stored in these caches in accordance with caching properties specified in the code of the blocks of Web page content.

Abstract

A system and method for associating blocks of Web page content with caching properties are provided. The caching properties may include global caching properties for all blocks of a Web page and/or individual caching properties for each individual block of the Web page. The caching properties may be identified within the code of the Web page content itself, such as within meta-tags. Caching properties may also be linked to client device characteristics. Both client device caching and proxy device caching of Web page content may be enabled, such that if a block of Web page content in the client device's cache is invalid, the proxy device's cache is checked for the block of Web page content. Thus, a single Web page may be rendered on a client device using blocks obtained from a local cache, a proxy device's cache, and blocks obtained from a source of the Web page content.

Description

    BACKGROUND OF THE INVENTION
  • 1. Technical Field
  • The present invention relates generally to an improved system and method for loading webpage content. More specifically, the present invention is directed to a system and method for customized content loading of portions of Web pages in real time environments.
  • 2. Description of Related Art
  • The World Wide Web, a service of the Internet, has evolved from being a repository of static files (Hypertext Markup Language (HTML), Graphic Interchange Format (GIF) and the like) to a very dynamic system with Web sites that span the gamut of possibilities, from multi-media sites that broadcast music on demand to e-commerce Web sites linking consumers and businesses or businesses to other businesses. With this evolution in usage, there has been a corresponding change in the nature of the content served by Web sites. Indeed, an increasing number of Web pages served by Web sites, especially e-commerce Web sites and portals, are dynamically generated.
  • Generating Web pages on demand, in a dynamic fashion, is a very expensive operation, not only in terms of storage and processing time, but also ultimately in terms of money. The program or application logic that generates a dynamic Web page typically must access various data sources, user profile information and complex business rules to generate the Web page. Quite often, generating dynamic pages requires querying data from data-sources such as relational databases (catalog information), or processing information feeds (like a stock quote feed, for example), which add to the cost of page generation.
  • In an attempt to reduce the resources needed to service user requests and to better serve dynamic content, Web sites have resorted to caching. The premise underlying caching is that in many cases, the content of dynamically generated pages does not change very frequently, thereby allowing the accessed pages to be cached. The server caches (i.e. locally stores for later retrieval) copies of such dynamically generated Web pages. Conventionally, as shown in FIG. 1 at S11, a client sends a Hypertext Transfer Protocol (HTTP) request for a Web page by, for example, clicking on a hyperlink or by specifying a Universal Resource Locator (URL). As shown at S12, the HTTP request is then received by the server, which then checks its cache to see if the response to the request (the entire requested Web page) is stored in the cache, as shown at S13.
  • As called for by S18, if the requested page is indeed present in the cache and if the response page is still valid, the page is extracted from the cache and sent to the client, as shown at S17. If the entire requested page is not present in the cache or is present but invalid (stale), application logic and/or the Web page's script is executed, as shown at S14. Executing the application logic and/or script may require the server to access data sources such as databases or information feeds, as called for by step S15. Only thereafter may the requested Web page be dynamically generated and sent to the client, as specified in steps S16 and S17. A step of caching the just-generated full page in memory may also be carried out.
  • This mechanism works very well as long as the dynamically generated pages can be cached efficiently (i.e., they are not invalidated very frequently), and the cost of servicing the page from the cache is less than the cost of re-generating the page again. As a result of efficient caching, a Web server uses fewer resources, especially central processing unit (CPU) resources to service a client's HTTP request. The ability to cache and to efficiently retrieve cached pages improves the server's performance (reduced response time) as well as its capacity to acceptably accommodate a greater number of users than it would otherwise have been able to serve without resorting to caching.
  • This type of caching is termed “full page caching.” This terminology reflects the nature of this form of caching wherein the cache memory contains complete HTML responses, i.e. entire Web pages. Herein, an entire Web page corresponds to a single HTTP request. Note that this differs from a Web screen page displayed on a computer screen. Web screen pages may be composed of one or more Web pages independently requested by the logic that generates the display of Web screen pages on computer screens. Full page caching may improve a Web site's overall capacity to handle user traffic. However, this solution is limited in many cases, as the data sources for such dynamically generated pages may change very frequently or unpredictably, making it difficult to positively determine the current validity of the cached page.
  • In many cases, moreover, a Web page refers to more than one data source. Since the granularity of caching is the entire page, changes to data from any one of the data sources necessarily results in the invalidation of the entire page, even if the data originating from the other data sources has not changed. This problem is further exacerbated when one or more of the data sources changes very frequently. Indeed, if the Web page's data sources change very frequently, the cost of caching and frequently invalidating the cached entry may be greater than the cost of dynamically generating a new page to service each HTTP request. Because of these problems and the fear of serving stale pages, many Web sites have abandoned full page caching in favor of dynamically generating pages for each incoming request, despite the cost of doing so.
  • One solution to the problem of reducing the cost of providing dynamically changing Web content while avoiding the problems associated with full page caching is provided by Agrawal et al. in U.S. Patent Application Publication No. 2002/0004813. Agrawal et al. describes a system in which Web content, e.g., a Web page, is broken down into cacheable blocks of content in the code for the Web page, e.g., HTML. Each cacheable block of content has an associated caching properties including an expiration time and is treated as static data until it expires. Some blocks may have shorter or longer expiration times than other blocks. The caching properties are identified using a cache tag library in Java Server Pages (JSPs). In particular, special JSP tag extensions may be defined that allow application developers to specify the caching properties of the constituent blocks in a Web page.
  • It is important to note that the Agrawal et al. mechanism handles cacheable blocks in Web pages from the server side using JSPs, ASPs, or other server side scripting mechanisms. The cache properties of the blocks are used to maintain a server side cache memory, i.e. a cache memory that is directly accessible by the server but is not directly accessible by a client device.
  • With Agrawal et al. when a page is retrieved for the first time, a local copy of the content generated by each of the cached blocks is made in the server before passing the executed block on to the output stream to be assembled with the other constituent blocks into the requested Web page. This local copy may then be added to the server side cache and identified by a specific special tag attribute. During the subsequent retrieval of this page, the cached block in the server side cache may be retrieved from the server side cache, if it is still present therein. If one or more of the constituent blocks of the requested page are present in the server side cache, the retrieved block may be used to assemble the requested page if the cached block is still valid instead of redundantly re-executing the code to generate the block.
  • Thus, the caching attributes of cacheable blocks of a Web page are used by the mechanism of Agrawal et al. to control the generation of content to be placed on an output stream, i.e. a stream from the server to the client device. Accordingly, the caching attributes of the cacheable blocks of the Web page are established by the server application and/or Web page developers. There is no mechanism described for controlling client side caching of blocks of Web page content.
  • As mentioned above, the caching attributes of Agrawal et al. are not used to control a client side retrieval of content. It can be appreciated that server side caching of Web page content is a different matter from that of client side caching of Web page content. From the server perspective, caching simply involves determining whether the portion of content is present in the server side cache and is valid. If not, the portion of content is regenerated and placed in the server side cache. From the client side perspective, caching involves determining if the requested portion of content is present in the client side local cache and is valid and if not, sending a request for the Web content to an appropriate source of the content. When the Web content is received, a copy of the Web content may then be placed in a client side local cache for future requests.
  • Client side caching benefits the speed of retrieval even when the client retrieves pages from a server that does not utilize caching. Client side caching reduces the overload on the network since pages that are cached locally may be retrieved locally and a request need not be sent over the network. Server side caching benefits the speed of generation of Web content at the server side but has no benefit to the overload on the network.
  • Moreover, the caching attributes of Agrawal are fixed attributes that are applied regardless of the client device that receives the Web page. Thus, a first client device that may not have as many resources as a second client device will still have the same fixed caching attributes applied to the Web content retrieved by the first client device as to the Web content retrieved by the second client device. There is no ability to customize the caching performed, from a client side, based on the characteristics of the client devices themselves.
  • SUMMARY OF THE INVENTION
  • In view of the above, it would be beneficial to have a system and method that permits customized loading of portions of Web page content in a real time system in which the loading is controlled from a client side. It would further be beneficial to have a system and method that provides customized loading of portions of Web page content based on characteristics of the client devices themselves. Moreover, it would be beneficial to have a system and method that permits a client side proxy device to provide a cache of portions of Web page content and mechanisms for determining when to provide requested Web page content from the client device cache, the proxy device cache, or to request the Web page content from the source of the Web page content.
  • The present invention provides a system, computer program product, and method for associating blocks of Web page content with caching properties. The caching properties may include global caching properties for all blocks of a Web page and/or individual caching properties for each individual block of the Web page. The individual caching properties may be different for each block of the same Web page. The caching properties may be identified within the code of the Web page content itself. In one exemplary embodiment, the caching properties may be provided as meta tags within the markup language code of Web page content.
  • In one exemplary embodiment, the caching properties identify a valid time period in which the corresponding block or blocks of Web page content are to remain valid within a client and/or proxy device cache. In another exemplary embodiment, such caching properties are linked to client device characteristics. For example, the manner by which blocks of the Web page content are cached may be made dependent upon the speed of the processor in the client device or other characteristics of the client device.
  • In an exemplary embodiment of the present invention, the meta tags may enable local caching of blocks of Web page content for various device formats. For example, various versions of a cached block of a Web page may be identified in the caching properties for handheld Web browsing devices, e.g., wireless telephones, handheld game devices, wristwatches, or any other type of device that may require a different format from that of a standard client computing device for which the Web page content was originally developed. Such local caching properties may include, for example, cache size attributes, display size attributes, different valid time periods for different types of devices, and the like. Such local caching in different formats for different devices provides for quicker retrieval of Web page content that is already formatted in the correct format for the particular device.
  • In the exemplary embodiments of the present invention, the caching of Web page content is controlled by a client device or a proxy device when parsing and executing the code of the Web page. In an exemplary embodiment of the present invention in which both client device caching and proxy device caching of Web page content is enabled, if a block of Web page content in the client device's cache is invalid, the proxy device's cache is checked for the block of Web page content. If the block of Web page content is valid in the proxy device's cache, then the block of Web page content is retrieved from the proxy device's cache and provided to the client device, where it is placed in the client device's cache in accordance with the caching properties. In this way, a single Web page may be rendered on a client device using blocks obtained from a local client device cache, blocks obtained from a proxy device's cache, and blocks of Web page content obtained from a source of the Web page content.
  • Moreover, blocks of Web page content may be used to render other Web pages that may use the same blocks even if the other Web pages do not have block level caching of Web page content enabled. For example, a first Web page having blocks A, B, C and D, and which has block level caching enabled, may be received in a client device. As a result, the blocks A, B, C and D may be stored in a local cache. Subsequently, a second Web page may be requested by the client device that also includes a block that is common to the first Web page, e.g., block A. Even though the second Web page may not have block level caching enabled, intelligent processing in the client device may determine that block A is present in the local cache and utilize the locally cached block A to render the second Web page.
  • In addition to the above, the present invention provides a user interface for displaying the code associated with a Web page such that a user may select blocks of the code to which block level caching is to be applied. Moreover this user interface provides a convenient mechanism by which a user may designate the caching properties for individual blocks of code of a Web page. Through use of the user interface, block level caching property meta tags may be automatically generated and inserted into the code of the Web page.
  • In an exemplary embodiment of the present invention, a method, apparatus and computer program product are provided in which code for a portion of a first Web page is received, where the code breaks the portion of the first Web page into blocks of Web page content, and one or more of the blocks of Web page content have associated caching properties identified in the code. The code is parsed for the portion of the first Web page to identify the blocks of Web page content and their associated caching properties. Content data corresponding to the blocks of Web page content is cached, in a client side data processing system cache, based on the associated caching properties. At least two blocks of Web page content have different caching properties and at least two portions of content data corresponding to the at least two blocks of Web page content are cached using the different caching properties.
  • In addition to the above, a request may be received to retrieve a second Web page, different from the first Web page, wherein a first block of Web page content in the second Web page is the same as a second block of Web page content in the first Web page. A determination may be made as to whether a first portion of content data, corresponding to the first block of Web page content in the second Web page that is the same as the second block of Web page content in the first Web page, is present in the client side data processing system cache. The first portion of content data may be retrieved from the client side data processing system cache if the first portion of content data is present in the client side data processing system cache. The second Web page may be rendered using the first portion of content data retrieved from the client side data processing system cache.
  • Moreover, a determination may be made as to whether the first portion of content data is valid in the client side data processing system cache. A request for the first portion of content data may be made from a source computing device if the first portion of content data is not present in the client side data processing system cache or is not valid in the client side data processing system cache. The second Web page may be rendered on a client device using the first portion of content data requested from the source computing device.
  • The first Web page may have block level caching enabled and the second Web page may not have block level caching enabled. The client side data processing system cache may be a local cache of a client device. The client side data processing system cache may be a cache of a proxy device coupled to a client device that originated a request for the first Web page. The associated caching properties may have a conditional requirement that identifies an operational characteristic that is required before the caching property is applied to content data for the corresponding block of Web page content. The associated caching properties are provided in meta tags within the code of the portion of the Web page. The request to retrieve the second Web page may originate from a different client device than a client device that requested the first Web page.
  • In addition, a determination may be made as to whether the first portion of content data is present in a client side proxy device coupled to the client device if the first portion of content data is not present in the local cache of the client device. The first portion of content data may be retrieved from the client side proxy device if the first portion of content data is present in the client side proxy device. The second Web page may be rendered on the client device using the first portion of content data retrieved from the client side proxy device.
  • Furthermore, operational characteristic information may be retrieved for the client side data processing system and compared to conditional requirements. A determination may be made as to whether the caching property is to be applied to content data for the corresponding block of Web page content based on results of the comparison.
  • The computer program product of the present invention may comprise a computer usable medium having a computer readable program. The computer readable program, when executed on a computer, may cause the computer to perform the various operations described above. In addition, the apparatus according to one exemplary embodiment of the present invention comprises a processor, a memory coupled to the processor, and a cache storage coupled to the processor. The memory may contain instructions which, when executed by the processor, causes the processor to perform the various operations described above.
  • These and other features and advantages of the present invention will be described in, or will become apparent to those of ordinary skill in the art in view of, the following detailed description of the exemplary embodiments of the present invention.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
  • FIG. 1 is a diagram illustrating a prior art mechanism for handling Web page content requests from a client device;
  • FIG. 2 is an exemplary block diagram of a network data processing system in which aspects of the present invention may be implemented;
  • FIG. 3 is an exemplary block diagram of a server computing device in which aspects of the present invention may be implemented;
  • FIG. 4 is an exemplary block diagram of a client computing device in which aspects of the present invention may be implemented;
  • FIG. 5 is an exemplary diagram illustrating examples of caching property tags in accordance with one exemplary embodiment of the present invention;
  • FIG. 6 is an exemplary diagram for illustrating an operation of the present invention based on caching properties provided as part of code for blocks of Web page content;
  • FIG. 7 is an exemplary diagram illustrating a series of operations for rendering Web page content on a client computing device in accordance with one exemplary embodiment of the present invention;
  • FIG. 8 is an exemplary diagram illustrating a graphical user interface through which block level caching may be enabled in accordance with one exemplary embodiment of the present invention;
  • FIG. 9 is a flowchart outlining an exemplary operation of the present invention when caching a block of Web page content; and
  • FIG. 10 is a flowchart outlining an exemplary operation of the present invention when rendering a block of Web page content on a client computing device.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • The present invention provides a mechanism for caching blocks of Web page content based on global and individual block caching properties identified in the code of the blocks of Web page content. As such, the present invention is especially well suited for distributed data processing environments, such as the Internet. The following FIGS. 2-4 are provided as exemplary of data processing environments and devices in which the aspects of the present invention may be implemented. The data processing environments and devices shown in FIGS. 2-4 are only exemplary and are not intended to state or imply any limitation as to the type or configuration of data processing environment or computing devices in which the aspects of the present invention may be implemented. Many modifications to the data processing environments and computing devices may be made without departing from the spirit and scope of the present invention.
  • With reference now to the figures, FIG. 2 depicts a pictorial representation of a network of data processing systems in which the present invention may be implemented. Network data processing system 200 is a network of computers in which the present invention may be implemented. Network data processing system 200 contains a network 202, which is the medium used to provide communications links between various devices and computers connected together within network data processing system 200. Network 202 may include connections, such as wire, wireless communication links, or fiber optic cables.
  • In the depicted example, server 204 is connected to network 202 along with storage unit 206. In addition, clients 208, 210, and 212 are connected to network 202. These clients 208, 210, and 212 may be, for example, personal computers or network computers. In the depicted example, server 204 provides data, such as boot files, operating system images, and applications to clients 208-212. Clients 208, 210, and 212 are clients to server 204. Network data processing system 200 may include additional servers, clients, and other devices not shown. In the depicted example, network data processing system 200 is the Internet with network 202 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, government, educational and other computer systems that route data and messages. Of course, network data processing system 200 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN). FIG. 2 is intended as an example, and not as an architectural limitation for the present invention.
  • Referring to FIG. 3, a block diagram of a data processing system that may be implemented as a server, such as server 204 in FIG. 2, is depicted in accordance with a preferred embodiment of the present invention. Data processing system 300 may be a symmetric multiprocessor (SMP) system including a plurality of processors 302 and 304 connected to system bus 306. Alternatively, a single processor system may be employed. Also connected to system bus 306 is memory controller/cache 308, which provides an interface to local memory 309. I/O Bus Bridge 310 is connected to system bus 306 and provides an interface to I/O bus 312. Memory controller/cache 308 and I/O Bus Bridge 310 may be integrated as depicted.
  • Peripheral component interconnect (PCI) bus bridge 314 connected to I/O bus 312 provides an interface to PCI local bus 316. A number of modems may be connected to PCI local bus 316. Typical PCI bus implementations will support four PCI expansion slots or add-in connectors. Communications links to clients 208-212 in FIG. 2 may be provided through modem 318 and network adapter 320 connected to PCI local bus 316 through add-in connectors.
  • Additional PCI bus bridges 322 and 324 provide interfaces for additional PCI local buses 326 and 328, from which additional modems or network adapters may be supported. In this manner, data processing system 300 allows connections to multiple network computers. A memory-mapped graphics adapter 330 and hard disk 332 may also be connected to I/O bus 312 as depicted, either directly or indirectly.
  • Those of ordinary skill in the art will appreciate that the hardware depicted in FIG. 3 may vary. For example, other peripheral devices, such as optical disk drives and the like, also may be used in addition to or in place of the hardware depicted. The depicted example is not meant to imply architectural limitations with respect to the present invention.
  • The data processing system depicted in FIG. 3 may be, for example, an IBM eServer pSeries system, a product of International Business Machines Corporation in Armonk, N.Y., running the Advanced Interactive Executive (AIX) operating system or LINUX operating system.
  • With reference now to FIG. 4, a block diagram illustrating a data processing system is depicted in which the present invention may be implemented. Data processing system 400 is an example of a client computer. Data processing system 400 employs a peripheral component interconnect (PCI) local bus architecture. Although the depicted example employs a PCI bus, other bus architectures such as Accelerated Graphics Port (AGP) and Industry Standard Architecture (ISA) may be used. Processor 402 and main memory 404 are connected to PCI local bus 406 through PCI Bridge 408. PCI Bridge 408 also may include an integrated memory controller and cache memory for processor 402. Additional connections to PCI local bus 406 may be made through direct component interconnection or through add-in boards.
  • In the depicted example, local area network (LAN) adapter 410, small computer system interface (SCSI) host bus adapter 412, and expansion bus interface 414 are connected to PCI local bus 406 by direct component connection. In contrast, audio adapter 416, graphics adapter 418, and audio/video adapter 319 are connected to PCI local bus 406 by add-in boards inserted into expansion slots. Expansion bus interface 414 provides a connection for a keyboard and mouse adapter 420, modem 422, and additional memory 424. SCSI host bus adapter 412 provides a connection for hard disk drive 426, tape drive 428, and CD-ROM drive 430. Typical PCI local bus implementations will support three or four PCI expansion slots or add-in connectors.
  • An operating system runs on processor 402 and is used to coordinate and provide control of various components within data processing system 400 in FIG. 4. The operating system may be a commercially available operating system, such as Windows XP, which is available from Microsoft Corporation. An object oriented programming system such as Java may run in conjunction with the operating system and provide calls to the operating system from Java programs or applications executing on data processing system 400. “Java” is a trademark of Sun Microsystems, Inc. Instructions for the operating system, the object-oriented programming system, and applications or programs are located on storage devices, such as hard disk drive 426, and may be loaded into main memory 404 for execution by processor 402.
  • Those of ordinary skill in the art will appreciate that the hardware in FIG. 4 may vary depending on the implementation. Other internal hardware or peripheral devices, such as flash read-only memory (ROM), equivalent nonvolatile memory, or optical disk drives and the like, may be used in addition to or in place of the hardware depicted in FIG. 4. Also, the processes of the present invention may be applied to a multiprocessor data processing system.
  • As another example, data processing system 400 may be a stand-alone system configured to be bootable without relying on some type of network communication interfaces As a further example, data processing system 400 may be a personal digital assistant (PDA) device, which is configured with ROM and/or flash ROM in order to provide non-volatile memory for storing operating system files and/or user-generated data.
  • The depicted example in FIG. 4 and above-described examples are not meant to imply architectural limitations. For example, data processing system 400 also may be a notebook computer or hand held computer in addition to taking the form of a PDA. Data processing system 400 also may be a kiosk or a Web appliance.
  • With the present invention, a server computing device, such as server 204 in FIG. 2, provides at least one portion of a Web page to a client device, such as client device 208. In accordance with the exemplary embodiments of the present invention, the server 204 provides a portion of Web page content that has associated caching properties. In a preferred embodiment, the portion of Web page content is either a single block of a Web page, or multiple blocks of a Web page. The Web page itself is made up of a plurality of blocks of Web page content which may all be provided by server 204 or may be provided by multiple servers or sources of Web page content.
  • In the depicted example, the server 204 provides a portion of Web page content directly to the client device 208 which may cache the portion of Web page content in a local cache of the client device 208 based on the associated caching properties of the portion of Web page content. In other embodiments of the present invention, a client side proxy computing device 220, such as a client side proxy server, may be provided through which the portion of Web page content may be provided to the client device 208. The term “client side” is meant to refer to the fact that the proxy device 220 is separated from the server 204 by a portion of a network 202, i.e. the proxy device 220 is not directly accessible by the server 204 and must be accessed via a network. The client device 208, however, may directly access the proxy device 220 without having to go through the network, although a local area network (not shown), different from the network 202 to which the server 204 is coupled, may be required for client device 208 to access the proxy device.
  • The client side proxy server 220 may itself cache the portions of Web page content based on the caching properties associated with the blocks of Web page content within the portions of Web page content. Multiple client devices may make use of the same client side proxy device 220 such that portions of Web page content requested by one client device, and cached in the proxy device 220, may be provided from the proxy device's cache to other client devices that request the same portion of Web page content.
  • As mentioned above, the present invention provides a system, computer program product, and method for associating blocks of Web page content with caching properties. The caching properties may include global caching properties for all blocks of a Web page and/or individual caching properties for individual block of the Web page. The individual caching properties may be different for each block of the same Web page. The caching properties may be identified within the code of the Web page content itself. In one exemplary embodiment, the caching properties may be provided as meta tags within the markup language code of the Web page content.
  • In one exemplary embodiment, the caching properties identify a valid time period in which the corresponding block or blocks of Web page content are to remain valid within a client and/or proxy device cache. In another exemplary embodiment, such caching properties are linked to client device characteristics. For example, the manner by which blocks of the Web page content are cached may be made dependent upon the speed of the processor in the client device or other characteristics of the client device.
  • In an exemplary embodiment of the present invention, the meta tags may enable local caching of blocks of Web page content for various device formats. For example, various versions of a cached block of a Web page may be identified in the caching properties for handheld Web browsing devices, e.g., wireless telephones, handheld game devices, wristwatches, or any other type of device that may require a different format from that of a standard client computing device for which the Web page content was originally developed. Such local caching properties may include, for example, cache size attributes, display size attributes, different valid time periods for different types of devices, and the like. Such local caching in different formats for different devices provides for quicker retrieval of Web page content that is already formatted in the correct format for the particular device.
  • In the exemplary embodiments of the present invention, the caching of Web page content is controlled on the client device and proxy device when parsing and executing the code of the Web page. In an exemplary embodiment of the present invention in which both client device caching and proxy device caching of Web page content is enabled, if a block of Web page content in the client device's cache is invalid, the proxy device's cache is checked for the block of Web page content. If the block of Web page content is valid in the proxy device's cache, then the block of Web page content is retrieved from the proxy device's cache and provided to the client device, where it is placed in the client device's cache in accordance with the caching properties. Since expiration times are keyed to the time at which the content data was sent by the content provider to the client/proxy device, the expiration time of the content data in the client device's cache will remain constant with the proxy device's cache in this case. In this way, a single Web page may be rendered on a client device using blocks obtained from a local client device cache, blocks obtained from a proxy device's cache, and blocks of Web page content obtained from a source of the Web page content, if necessary.
  • FIG. 5 is an exemplary diagram illustrating examples of caching property tags in accordance with one exemplary embodiment of the present invention. As shown in FIG. 5, the present invention provides a mechanism for providing caching properties in code of a portion of Web page content. In addition, as will be described in more detail hereafter, the present invention provides mechanisms for caching portions of Web page content on client devices and client proxy devices in accordance with these caching properties set forth in the code of the portion of Web page content. Moreover, the present invention provides mechanisms for controlling the retrieval of portions of Web page content at a client device based on such caching properties provided in the code of the portions of Web page content.
  • The example portion of Web page content depicted in FIG. 5 makes use of the HyperText Markup Language (HTML) as the language in which the portion of Web page content is coded. While the depicted example shows an HTML based portion of Web page content, the present invention is not limited to such. Rather, other programming languages, such as other markup languages including Extensible Markup Language (XML), Extensible HTML (XHTML), Standard Generalized Markup Language (SGML), and the like, may be used without departing from the spirit and scope of the present invention. The example code shown in FIG. 5 is only exemplary and is not intended to state or imply any limitation with regard to the manner by which caching properties may be provided in code of a portion of Web page content.
  • As shown in FIG. 5, the portion of Web page content 500 includes a header section 510 and a body section 520 that may include one or more blocks 530 and 535 of Web page content. Among other known header section elements of a portion of Web page content, the present invention provides meta tags 540, 550 for specifying global Web page level caching properties that identify the default caching properties for the entire portion of Web page content. These global, or default, caching properties are utilized by the client device and/or proxy device to cache blocks of the portion of Web page content 500 when separate individual block level caching properties are not specified for blocks of Web page content in the body 520 of the portion of Web page content 500. For example, if global caching properties are specified for the portion of Web page content, and block level caching properties are specified for a first block but not for a second block of the portion of Web page content, then block level caching properties will be applied to the first block of Web page content but global or default caching properties will be applied to the second block of Web page content.
  • Moreover, if there are conflicts between global and block level caching properties, such conflicts may be resolved in favor of one of block level or global caching properties, depending upon the particular implementation of the present invention. In a preferred embodiment of the present invention, global caching properties are preferred over block level caching properties when a conflict is identified.
  • The global or default caching properties are designated in meta tags 540 and 550 provided in the header section 510 of the portion of Web page content 500. The meta tags 540 and 550 specify such caching properties as cache control properties, cache control types, expiration times, expiration time period designations, cache size, network bandwidth, processor speed, and the like.
  • Similar meta tags are provided in the body section 520 of the portion of Web page content 500. These meta tags are provided at a block level within body section 520. That is, individual blocks of Web page content may be designated using tags, such as “htmlblock.” Each of these blocks of Web page content may have associated block level meta tags 560-580 for identifying caching properties associated with their corresponding block of Web page content. Some blocks may be designated within the body 520 of the portion of Web page content 500 but may not have associated block level caching properties specifically set forth in the code of the portion of Web page content 500. As a result, the global or default caching properties specified in the header section 510 would be applied to such blocks of Web page content when the client device and/or proxy device process the code of the portion of Web page content 500.
  • The meta tags 560 and 570 provide similar caching properties as those described above with regard to the global or default caching properties. That is, properties such as cache control properties, cache control types, expiration times, expiration time period designations, and the like, may be designated in block level meta tags 560 and 570. These caching properties supersede any global or default caching properties set forth in the header section 510 of the portion of Web page content 500, so long as a direct conflict between the two sets of caching properties is identified.
  • Meta tag 580 provides another example of a block level meta tag identifying block level caching properties that are slightly different from those of meta tags 560 and 570. The meta tag 580 shows an example in which the caching property includes a conditional requirement for the corresponding caching property to be implemented. The conditional requirement is based on a characteristic of the client device and/or proxy device that is processing the code of the portion of Web page content 500. For example, in the depicted example, the conditional requirement is that the CPU speed of the client device and/or proxy device be categorized as “lowspeed.” The actual determination as to whether a particular CPU speed is “lowspeed,” “middlespeed” or “high-speed” may be performed based on logic set forth in software and/or hardware provided in the client device and proxy device. For example, a plug-in module, applet, or other application, may be provided in association with a client device's browser, or in a proxy device, that makes such determinations and processes code of Web page content in accordance with the mechanisms of the present invention and the determined characteristics of the client device/proxy device.
  • It should be appreciated that while the depicted example bases the caching property on CPU speed, this is but one example of a client device and/or proxy device characteristic that may be used as a basis for determining whether to implement a caching property associated with a conditional requirement. Other examples may include network connection speed, cache size, available cache space, number of packets sent/received, or any other characteristic that is associated with the ability of the client/proxy device to receive and process data. Other characteristics that may be used include, for example, time of day, device type (e.g., handheld web browsing device), and the like. Any type of characteristic that is representative of the client/proxy device's ability to receive and process data is intended to be within the spirit and scope of the present invention.
  • Returning the depicted example, with the meta tag 580, when the CPU speed of the device processing the code of the portion of Web page content 500 is determined to be “lowspeed”, then the caching property “cache 15” is implemented on the device. In the depicted example, “cache 15” corresponds to caching the block of Web page content 535 for 15 minutes. Thus, an expiration time for the block of Web page content 535 may be established that is 15 minutes from a time at which the Web page content was originally transmitted by the content provider.
  • The body of each block of Web page content may provide code for rendering corresponding Web page content on a client device. Such code may reference sources of static and/or dynamic Web page content from which the content is to be retrieved. For example, dynamic Web page content that may be retrieved to provide a particular Web page on a client device includes stock quotes, sports scores, news stories, weather information, and the like. Each of these types of content may be provided from various sources, e.g., various content provider servers, which may be identified in the code of the block of Web page content.
  • When the code of the block of Web page content is processed by a browser application, or the like, on a client device, a separate request for that content is generated. This request is processed to determine whether to retrieve the content from its identified source, a local cache of the client device, a proxy device cache, or other source. With the present invention, when the request is processed, a local cache of the client device is first queried to determine if a valid copy of the content for the block of the Web page is present in the local cache. If not, and if a proxy device is provided, a proxy device cache is queried to determine if a valid copy of the content for the block of the Web page is present in the proxy device cache. If not, then the request is transmitted to the original source of the content for the block of the Web page so as to obtain the content for rendering the block of the Web page at the client device.
  • It is important to realize that each block of Web page content may have its own set of block level caching properties specified in meta tags associated with the block of Web page content. As a result, a single Web page may be comprised of a plurality of blocks of Web page content, each having different caching properties. Thus, when retrieving such a Web page, blocks of the Web page may be retrieved from a number of different places including a local cache of the client device, a cache in a proxy device, and various original sources of the blocks of Web page content. The processes for obtaining of content for rendering blocks of a Web page may be performed in substantially a parallel manner so as to build a rendition of the Web page on the client device from the various identified blocks of Web page content identified in the code of the Web page content.
  • FIG. 6 is an exemplary diagram for illustrating an operation of the present invention based on caching properties provided as part of code for blocks of Web page content. The depicted example makes use of a proxy server through which the client devices access a network. The proxy server is not essential to the operation of the present invention but provides additional functionality as described hereafter. As set forth previously, the mechanisms of the present invention may be implemented in a distributed data processing system in which the client devices access web page provider and content provider systems directly via a network without a proxy server being interposed between the client devices and the network.
  • In the example shown in FIG. 6, it is assumed that a user of client device 610 has sent a request for a particular web page 660 using a browser application provided on the client device 610. As is well known in the art, such a request may be generated by the user entering, for example, a Uniform Resource Locator (URL) for the web page 660, clicking on a hyperlink for the Web page 660, or the like. The request is routed to the Web page provider server 640 via proxy server 630 and network 645 in a manner generally known in the art.
  • The Web page 660 includes two blocks of Web page content, block A and block B, which each have separate caching properties associated with them. For purposes of simplicity of the example, the caching properties are considered to be caching properties that are not dependent upon any client device characteristics. However, it will be readily understood that the caching properties may be based on characteristics of the client device 610 that is processing the Web page 660 code in the manner previously described, without departing from the spirit and scope of the present invention.
  • In response to receiving the request for the Web page 660, the Web page provider server 640 sends the Web page 660 to the client device 610 via the proxy server 630 and network 645. The proxy server 630 receives the Web page 660 and processes the code and data to determine how to cache the data in accordance with the caching properties specified in the code of the Web page 660.
  • For example, upon receiving the code for the Web page 660, the proxy server 630, by way of a running application, applet, plug-in, or hardware implemented logic, parses the code for the Web page 660, identifies meta tags associated with page level and block level caching properties, and processes content data for the blocks of the Web page 660 in accordance with the caching properties specified in the meta tags. Such processing may include the proxy server 630 requesting any required content data for blocks of the Web page 660 from content providers, such as the content data 670 for block A from server 640 and content data 675 for block B from content provider server 650. As a result of such operations, the proxy server 630 receives and stores the content data for blocks A and B of Web page 660 in proxy cache 680. The validity attributes for the content data of Block A are set such that the content data becomes invalid after 5 minutes from the time at which the content data was transmitted to the proxy server 630 from server 640. The validity attributes for the content data 675 of Block B are set such that the content data becomes invalid after 15 minutes from the time at which the content data was transmitted to the proxy server 630 from content provider server 650.
  • While the proxy server 630 is performing such caching operations, the web page 660 and content 670 are forwarded to the client device 610 that originated the request for the web page 660. The client device 610 performs similar caching operations based on the caching properties identified in the code of the web page 660. The client device 610 stores the content data 670 for block A in a local cache 685 and sets the validity attributes for the content data 670 for Block A so that the content data 670 becomes invalid after 5 minutes from the time it is received in the client device 610. The client device 610 may also issue a request for the content data 675 for block B to content provider server 650 and store the received content data 675 in local cache 685 with validity attributes set so that the content data 675 becomes invalid after 15 minutes from the time that it is received in the client device 610. In addition, the client device 610 may render the web page 690 on the client device using the content data for blocks A and B.
  • Assume that at approximately 10 minutes after the Web page content data is cached in the proxy cache 680, client device 620 issues a request for the same Web page 660 and that client device 620 also accesses network 645 via the proxy server 630. The code for Web page 660 is received by client device 620 from the Web page provider 640. Alternatively, the code may be provided to the client device 620 by proxy server 630, or from a local cache (not shown) if the Web page has been previously requested by the client device 620. The application, plug-in, applet, or the like, on the client device 620 parses the code of the Web page 660 and attempts to retrieve the content data for each of the blocks of Web page content.
  • For each block of Web page content, the client device 620 first looks at its own local cache to determine if the local cache stores a valid copy of the content data for rendering the block of Web page content. If not, then a request for content data for the block of the Web page content is sent to the proxy server 630. The proxy server 630 looks at its own proxy cache 680 to determine if it has a valid copy of the content data for the block of the Web page content. If not, then the request is forwarded to the appropriate content data provider, e.g., content provider server 650.
  • In the particular example shown in FIG. 6, the validity of the various blocks of Web page 660 is determined according to the caching properties specified in the code of the Web page 660 when it was originally received and stored in the cache, e.g. proxy cache 680 and client device local cache. Since neither block A nor block B have their content data stored in a local cache of client device 620, a determination is made as to whether the proxy server 630 has valid content data for these blocks in proxy cache 680.
  • Since the present request from client device 620 occurs 10 minutes after the time at which the content data for blocks A and B is transmitted to proxy cache 680, the content data for block A is invalid in proxy cache 680. However, the content data for block B in proxy cache 680 is still valid. As a result, the request for the content data for block A is forwarded to Web page provider server 640 to retrieve content data 670 and the content data for block B is sent from the proxy cache 680 to the client device 620. As a result, the client device 620 renders the web page 695 on client device 620 using the content data 670 for block A as obtained from the web page provider server 640 and the content data for block B from proxy cache 680.
  • It should be noted that in such a case, since the content data for block A was invalid in proxy cache 680, and had to be requested from web page provider server 640, this content data is again cached in proxy cache 680 with new validity attributes keyed to the most recent transmission of the content data by the web page provider server 640. This content data 670 and the content data for block B obtained from proxy cache 680 are also cached in a local cache (not shown) in client 620. The validity attributes for this content data will match those of the proxy cache 680 such that the content data will expire in both the client device 620 and the proxy device 630 at the same time. Relative to client device 610, the content data for block B in proxy cache 680 will expire at the same time as the copy of this same content data in local cache 685. However, the content data for block A will remain valid in proxy cache 680 even after the content data for block A in local cache 685 expires due to the subsequent request for the content data for block A made by client device 620.
  • FIG. 7 is an exemplary diagram illustrating a series of operations for rendering Web page content on a client computing device in accordance with one exemplary embodiment of the present invention. As shown in FIG. 7, when a client device 710 receives a request to retrieve a Web page, such as by way of a user's entry of a URL or clicking of a hyperlink, for example, the client device 710 first queries its local cache 720 for the content to render the Web page in a browser application of the client device 710. For purposes of illustration, it will be assumed that the operation shown in FIG. 7 is performed for each block of Web page content within the requested Web page and thus, only a single block will be addressed in this description. The operations described may be repeated for each block of Web page content until all of the necessary content data for rendering the Web page at the client device 710 is made available to the client device 710.
  • The querying of the local cache 720 results in either the block of Web page content being within the local cache 720 and being valid, i.e. it has not expired, the block of Web page content being within the local cache 720 but being invalid, or the block of Web page content not being within the local cache 720. If the block of Web page content is within the local cache 720 and valid, then the response from the local cache 720 may include the content data for that block of Web page content, which the browser application may then use to render the Web page on the client device 710.
  • If either the block of Web page content is invalid within the local cache 720 or is not in the local cache 720, then the client device 710 queries the proxy server cache 730 for the content data corresponding to the block of Web page content. Again, the content data for the block may be in the proxy server cache 730 and valid, in the proxy server cache 730 and invalid, or not in the proxy server cache 730. If the content data for the block is in the proxy server cache 730 and is valid, then it is returned to the client device 710 for use in rendering the Web page. Moreover, the proxy server cache 730 may be refreshed again when the client device 710 uses the data stored in the proxy server cache 730. If the content data is either in the proxy server cache 730 and invalid or not in the proxy server cache 730, then the client device 710 sends a request to the content provider server 740 that is the source of the content data for that block of Web page content.
  • When the content provider server 740 sends the requested content data to the client device 710, the content data is passed through the proxy server. The proxy server performs the necessary operations, as previously discussed, to parse the caching property meta tags in the content and store a copy of the content data for the block of Web page content in the proxy server cache 730 in accordance with these caching property meta tags. A similar operation is performed at the client device 710 to store a copy of the content data for the block of Web page content in the local cache 720.
  • It should be noted that, because the present invention provides a client side block level caching mechanism, the performance gains obtainable from client side cached portions of a Web page may be achievable even if the Web page that is being requested does not enable block level caching. In other words, with the mechanisms of the present invention, intelligent logic may be provided in conjunction with the client side browser application, such as via a plug-in application, an applet, or the like, to analyze requested Web pages to determine what blocks of content are present in the Web pages that may be retrieved from a local cache or from a client side proxy cache device. Thus, blocks of Web page content which have been cached in a local cache or proxy device's cache may be used to render other Web pages that may use the same blocks even if the other Web pages do not have block level caching of Web page content enabled.
  • For example, a first Web page having blocks A, B, C and D, and which has block level caching enabled, may be received in a client device. As a result, the blocks A, B, C and D may be stored in a local cache and/or a proxy device's cache. Subsequently, a second Web page may be requested by the client device, or a different client device if a proxy device is utilized, that also includes a block that is common to the first Web page, e.g., block A. Even though the second Web page may not have block level caching enabled, intelligent processing in the client device may determine that block A is present in the local cache and utilize the locally cached block A to render the second Web page.
  • This intelligent processing may involve parsing and analyzing the code of the requested Web page to identify blocks within the code of the requested Web page. Searching a local cache and/or proxy device's cache to determine if the identified blocks are present and valid in either the local cache or the proxy device's cache and retrieving those cached versions of the Web page blocks if they are present and valid. If the blocks are not present, then the original source of that portion of Web page content may be accessed to obtain the requested Web page content. All of this processing may be performed despite the fact that the requested Web page itself does not enable block level client side caching of Web page content.
  • It should be noted that while the above embodiments are described in terms of the automatic caching of blocks of Web page content based on block level caching properties specified in the code of the Web page, such automatic caching may be overridden by the user of the client device. That is, the user may select an appropriate control to override block level caching when the user so desires. The control may take the form of a graphical user interface control that is selectable by the user via a user interface, a particular combination of key strokes, or the like. In such an instance where the user overrides block level caching, global caching properties may be utilized instead. Alternatively, if block level caching is overridden by the user, caching of the Web page content may be discontinued altogether.
  • As mentioned above, the embodiments of the present invention make use of block level caching properties that are specified in the code of the Web page content. FIG. 8 is an exemplary diagram illustrating a graphical user interface through which block level caching may be enabled in accordance with one exemplary embodiment of the present invention. As shown in FIG. 8, the graphical user interface includes a plurality of tool interfaces 810-850 for specifying different types of global and/or block level caching properties. A Web page content code display portion 860 is provided in which the code for particular Web page content is displayed. A user may select portions of the Web page content to be a block of Web page content using a user interface, such as a mouse and associated displayed cursor.
  • For example, using a mouse, a user may highlight a portion of the Web page content code to be a block of Web page content. The user may then select one or more tool interfaces 810-850 for associating a block level caching property to be applied to the highlighted portion of Web page content code. The selection of one or more tool interfaces 810-850 may result in a subsequent graphical user interface window 870 being displayed for entry of particular values to be associated with the selected block level caching property. For example, an expiration time tool interface 820 may be used to generate a block level caching meta tag to be inserted into the Web page content code and the window 870 may be used to allow a user to input the expiration time period value to be associated with the expiration time meta tag.
  • The user may repeatedly highlight portions of Web page content and select tool interfaces to apply various global and/or block level caching properties to various blocks of the Web page content. Once the user is satisfied with the caching properties that have been applied to the Web page content code, the user may select a “save” interface tool 880 for saving a modified version of the Web page content code in which meta tags and corresponding caching property values are inserted in accordance with the user's selections using the graphical user interface. In this way, Web page content code is generated having global and/or block level caching properties inserted therein.
  • It should be appreciated that FIG. 8 is only exemplary and many other types of interfaces may be utilized with the present invention without departing from the spirit and scope of the present invention. For example, other tool interfaces other than those shown in FIG. 8 may be used in addition to, or in replacement of, those depicted. Moreover, various pull down menus, popup menus, or other known graphical user interface mechanisms may be used as part of the graphical user interface of FIG. 8 without departing from the spirit and scope of the present invention.
  • FIGS. 9 and 10 are flowcharts outlining exemplary operations of the present invention. It will be understood that each block, and combination of blocks, of the flowchart illustration in FIGS. 9 and 10 can be implemented by computer program instructions. These computer program instructions may be provided to a processor or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the processor or other programmable data processing apparatus create means for implementing the functions specified in the flowchart block or blocks. These computer program instructions may also be stored in a computer-readable memory or storage medium that can direct a processor or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory or storage medium produce an article of manufacture including instruction means which implement the functions specified in the flowchart block or blocks.
  • Accordingly, blocks of the flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the flowchart illustrations, and combinations of blocks in the flowchart illustrations, can be implemented by special purpose hardware-based computer systems which perform the specified functions or steps, or by combinations of special purpose hardware and computer instructions.
  • FIG. 9 is a flowchart outlining an exemplary operation of the present invention when caching a block of Web page content. The operations shown in FIG. 8 may be performed, for example, at a client device, a proxy device, or the like.
  • As shown in FIG. 9, the operation starts by receiving code for a portion of Web page content (step 910). The code is parsed to identify meta tags within the code (step 920). The meta tags are then processed to identify global and block level caching properties for the blocks of Web page content within the portion of Web page content (step 930). A determination is made as to whether any of the meta tags have conditional requirements (step 940).
  • If so, information regarding operational characteristics of the present computing device that is processing the code for the portion of Web page content is retrieved (step 950). This information may be obtained, for example, from a configuration file, a performance monitoring application, or the like. The operational characteristic information is then compared to the conditional requirement for the meta tags having conditional requirements. A determination is made as to whether the corresponding caching property is to be applied, for each meta tag having a conditional requirement, based on the comparison (step 960). If so, then the corresponding caching property is selected for use in caching the associated block of Web page content (step 970).
  • Thereafter, or if there are no conditional requirement based meta tags, a determination is made as to whether there are any conflicts between global and block level caching properties (step 980). If so, then these conflicts are resolved in favor of the global caching properties such that the global caching properties are applied to the blocks of Web page content having the conflicting block level caching properties (step 990). Thereafter, or if there are no conflicts, the content data for the blocks of Web page content are retrieved and the various caching properties for each block of Web page content in the portion of Web page content are applied to content data for the corresponding blocks (step 995). The operation then ends.
  • FIG. 10 is a flowchart outlining an exemplary operation of the present invention when rendering a block of Web page content on a client computing device. It should be appreciated that the operation outlined in FIG. 10 is for one block of Web page content. The operation may be repeated for each block of Web page content required to render the requested Web page.
  • As shown in FIG. 10, the operation starts by querying a local client device cache for the content data for the block of Web page content (step 1010). A determination is made as to whether a valid copy of the content data is present in the local cache (step 1020). If so, then the content data is retrieved and used by the client device to render that block of the Web page content on the client device (step 1030).
  • If the content data is not present in the local cache of the client device, a query is sent to a proxy device to request the content data from the proxy device's cache (step 1040). A determination is made as to whether a valid copy of the content data is present in the proxy device's cache (step 1050). If so, then the content data is sent to the client device where a copy is placed in the local cache and the content data is used to render the block of Web page content on the client device (step 1060). It should be appreciated that, in storing a copy of the content data in the local cache, the caching properties specified in the code of the Web page will ensure consistency between the client device and the proxy device caches since expiration times are based on the time when the content data was transmitted by the content providers.
  • If the proxy device's cache does not have a valid copy of the content data for the block of Web page content, then a request is generated and sent to the content provider that provides the content data for the block of Web page content (step 1070). Typically, the code of the Web page for the block will identify the content provider, such as by network address, URL, or the like, and this may be used to send the request for the content data. Upon receiving the content data from the content provider (step 1080), the content data is used to render the block of Web page content (step 1090) and a copy of the content data is stored in a local cache in the manner outlined above in FIG. 9 (step 1095). The operation then terminates.
  • Thus, the present invention provides mechanisms for controlling the caching of blocks of Web page content in client side caches that may be part of a client device, proxy device, or the like. The present invention further provides mechanisms for setting forth conditional requirements for the application of caching properties based on client side device operational characteristics. Moreover, the present invention provides a mechanism for defining global and block level caching properties and resolving conflicts between such caching properties. Furthermore, the present invention provides mechanisms for building a Web page from content data obtained from various client side caches and a server side content provider based on content data stored in these caches in accordance with caching properties specified in the code of the blocks of Web page content.
  • It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer readable media may take the form of coded formats that are decoded for actual use in a particular data processing system.
  • The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.

Claims (20)

1. A method, in a client side data processing system, for processing a portion of a Web page, comprising:
receiving code for a portion of a first Web page, wherein the code breaks the portion of the first Web page into blocks of Web page content, and wherein one or more of the blocks of Web page content have associated caching properties identified in the code;
parsing the code for the portion of the first Web page to identify the blocks of Web page content and their associated caching properties; and
caching, in a client side data processing system cache, content data corresponding to the blocks of Web page content based on the associated caching properties, wherein at least two blocks of Web page content have different caching properties, and wherein at least two portions of content data corresponding to the at least two blocks of Web page content are cached using the different caching properties.
2. The method of claim 1, further comprising:
receiving a request to retrieve a second Web page, different from the first Web page, wherein a first block of Web page content in the second Web page is the same as a second block of Web page content in the first Web page;
determining if a first portion of content data, corresponding to the first block of Web page content in the second Web page that is the same as the second block of Web page content in the first Web page, is present in the client side data processing system cache;
retrieving the first portion of content data from the client side data processing system cache if the first portion of content data is present in the client side data processing system cache; and
rendering the second Web page using the first portion of content data retrieved from the client side data processing system cache.
3. The method of claim 2, further comprising:
determining if the first portion of content data is valid in the client side data processing system cache;
requesting the first portion of content data from a source computing device if the first portion of content data is not present in the client side data processing system cache or is not valid in the client side data processing system cache; and
rendering the second Web page on a client device using the first portion of content data requested from the source computing device.
4. The method of claim 2, wherein the first Web page has block level caching enabled, and wherein the second Web page does not have block level caching enabled.
5. The method of claim 2, wherein the client side data processing system cache is a local cache of a client device.
6. The method of claim 5, further comprising:
determining if the first portion of content data is present in a client side proxy device coupled to the client device if the first portion of content data is not present in the local cache of the client device;
retrieving the first portion of content data from the client side proxy device if the first portion of content data is present in the client side proxy device; and
rendering the second Web page on the client device using the first portion of content data retrieved from the client side proxy device.
7. The method of claim 2, wherein the client side data processing system cache is a cache of a proxy device coupled to a client device that originated a request for the first Web page.
8. The method of claim 1, wherein the associated caching properties has a conditional requirement that identifies an operational characteristic that is required before the caching property is applied to content data for the corresponding block of Web page content.
9. The method of claim 2, further comprising:
retrieving operational characteristic information for the client side data processing system;
comparing the operational characteristic information to the conditional requirement; and
determining if the caching property is to be applied to content data for the corresponding block of Web page content based on results of the comparison.
10. The method of claim 1, wherein the associated caching properties are provided in meta tags within the code of the portion of the Web page.
11. The method of claim 2, wherein the request to retrieve the second Web page originates from a different client device than a client device that requested the first Web page.
12. A computer program product comprising a computer usable medium having a computer readable program, wherein the computer readable program, when executed on a computer, causes the computer to:
receive code for a portion of a first Web page, wherein the code breaks the portion of the first Web page into blocks of Web page content, and wherein one or more of the blocks of Web page content have associated caching properties identified in the code;
parse the code for the portion of the first Web page to identify the blocks of Web page content and their associated caching properties; and
cache, in a client side data processing system cache, content data corresponding to the blocks of Web page content based on the associated caching properties, wherein at least two blocks of Web page content have different caching properties, and wherein at least two portions of content data corresponding to the at least two blocks of Web page content are cached using the different caching properties.
13. The computer program product of claim 12, wherein the computer readable program further causes the computer to:
receive a request to retrieve a second Web page, different from the first Web page, wherein a first block of Web page content in the second Web page is the same as a second block of Web page content in the first Web page;
determine if a first portion of content data, corresponding to the first block of Web page content in the second Web page that is the same as the second block of Web page content in the first Web page, is present in the client side data processing system cache;
retrieve the first portion of content data from the client side data processing system cache if the first portion of content data is present in the client side data processing system cache; and
render the second Web page using the first portion of content data retrieved from the client side data processing system cache.
14. The computer program product of claim 13, wherein the computer readable program further causes the computer to:
determine if the first portion of content data is valid in the client side data processing system cache;
request the first portion of content data from a source computing device if the first portion of content data is not present in the client side data processing system cache or is not valid in the client side data processing system cache; and
render the second Web page on a client device using the first portion of content data requested from the source computing device.
15. The computer program product of claim 13, wherein the first Web page has block level caching enabled, and wherein the second Web page does not have block level caching enabled.
16. The computer program product of claim 13, wherein the client side data processing system cache is a local cache of a client device.
17. The computer program product of claim 16, wherein the computer readable program further causes the computer to:
determine if the first portion of content data is present in a client side proxy device coupled to the client device if the first portion of content data is not present in the local cache of the client device;
retrieve the first portion of content data from the client side proxy device if the first portion of content data is present in the client side proxy device; and
render the second Web page on the client device using the first portion of content data retrieved from the client side proxy device.
18. The computer program product of claim 12, wherein the associated caching properties has a conditional requirement that identifies an operational characteristic that is required before the caching property is applied to content data for the corresponding block of Web page content.
19. The computer program product of claim 13, wherein the computer readable program further causes the computer to:
retrieve operational characteristic information for the client side data processing system;
compare the operational characteristic information to the conditional requirement; and
determine if the caching property is to be applied to content data for the corresponding block of Web page content based on results of the comparison.
20. An apparatus, comprising:
a processor;
a memory coupled to the processor; and
a cache storage coupled to the processor, wherein the memory contains instructions which, when executed by the processor, causes the processor to:
receive code for a portion of a first Web page, wherein the code breaks the portion of the first Web page into blocks of Web page content, and wherein one or more of the blocks of Web page content have associated caching properties identified in the code;
parse the code for the portion of the first Web page to identify the blocks of Web page content and their associated caching properties; and
cache, in the cache storage, content data corresponding to the blocks of Web page content based on the associated caching properties, wherein at least two blocks of Web page content have different caching properties, and wherein at least two portions of content data corresponding to the at least two blocks of Web page content are cached using the different caching properties.
US11/260,578 2005-10-27 2005-10-27 Customized content loading mechanism for portions of a web page in real time environments Abandoned US20070101061A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/260,578 US20070101061A1 (en) 2005-10-27 2005-10-27 Customized content loading mechanism for portions of a web page in real time environments

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/260,578 US20070101061A1 (en) 2005-10-27 2005-10-27 Customized content loading mechanism for portions of a web page in real time environments

Publications (1)

Publication Number Publication Date
US20070101061A1 true US20070101061A1 (en) 2007-05-03

Family

ID=37997954

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/260,578 Abandoned US20070101061A1 (en) 2005-10-27 2005-10-27 Customized content loading mechanism for portions of a web page in real time environments

Country Status (1)

Country Link
US (1) US20070101061A1 (en)

Cited By (144)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080010359A1 (en) * 2006-07-10 2008-01-10 Jeffrey Mark Achtermann Computer implemented method and system for managing server-based rendering of messages in a heterogeneous environment
US20080228920A1 (en) * 2007-03-16 2008-09-18 Souders Steven K System and method for resource aggregation and distribution
US20080288722A1 (en) * 2005-04-19 2008-11-20 Streamezzo Method for Optimization of the Management of a Server Cache Which May be Consulted by Client Terminals with Differing Characteristics
US20100088612A1 (en) * 2006-12-14 2010-04-08 Alibaba Group Holding Limited Method and System for Displaying Web Page
US20100325615A1 (en) * 2009-06-23 2010-12-23 Myspace Inc. Method and system for capturing web-page information through web-browser plugin
US20110191791A1 (en) * 2008-10-01 2011-08-04 Nicolas Seyvet Retrieving an object
US8141003B1 (en) * 2009-04-15 2012-03-20 Sprint Communications Company L.P. Multipage navigation on a small screen device
US20120166648A1 (en) * 2010-12-23 2012-06-28 Yun-Seok Oh Apparatus and method for providing a service through sharing solution providing unit in cloud computing environment
US20120226972A1 (en) * 2009-08-03 2012-09-06 Limelight Networks, Inc. Systems and methods thereto for acceleration of web pages access using next page optimization, caching and pre-fetching technique
US20120278886A1 (en) * 2011-04-27 2012-11-01 Michael Luna Detection and filtering of malware based on traffic observations made in a distributed mobile traffic management system
US8341177B1 (en) * 2006-12-28 2012-12-25 Symantec Operating Corporation Automated dereferencing of electronic communications for archival
US20130013790A1 (en) * 2008-03-31 2013-01-10 Swaminathan Sivasubramanian Content management
US20130041970A1 (en) * 2011-08-11 2013-02-14 Sweekar Hillary Pinto Client side caching
GB2498064A (en) * 2011-12-07 2013-07-03 Seven Networks Inc Distributed content caching mechanism using a network operator proxy
US20130275853A1 (en) * 2012-04-13 2013-10-17 Apple Inc. Method for improving backward/forward performance between certain types of dynamic web pages
US8621075B2 (en) 2011-04-27 2013-12-31 Seven Metworks, Inc. Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
US8700728B2 (en) 2010-11-01 2014-04-15 Seven Networks, Inc. Cache defeat detection and caching of content addressed by identifiers intended to defeat cache
US8750123B1 (en) 2013-03-11 2014-06-10 Seven Networks, Inc. Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network
US8761756B2 (en) 2005-06-21 2014-06-24 Seven Networks International Oy Maintaining an IP connection in a mobile network
US8774844B2 (en) 2007-06-01 2014-07-08 Seven Networks, Inc. Integrated messaging
US8775631B2 (en) 2012-07-13 2014-07-08 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US8799410B2 (en) 2008-01-28 2014-08-05 Seven Networks, Inc. System and method of a relay server for managing communications and notification between a mobile device and a web access server
US8806344B1 (en) * 2012-05-23 2014-08-12 Lawrence Taylor, Jr. System and method of displaying electronic database reports
US8806518B2 (en) * 2012-06-27 2014-08-12 Intel Corporation Performance analysis for combining remote audience responses
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
US8811952B2 (en) 2002-01-08 2014-08-19 Seven Networks, Inc. Mobile device power management in data synchronization over a mobile network with or without a trigger notification
US20140237133A1 (en) * 2011-09-26 2014-08-21 Beijing Qihoo Technology Company Limited Page download control method, system and program for ie core browser
US8832228B2 (en) 2011-04-27 2014-09-09 Seven Networks, Inc. System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
US8839412B1 (en) 2005-04-21 2014-09-16 Seven Networks, Inc. Flexible real-time inbox access
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
US8868753B2 (en) 2011-12-06 2014-10-21 Seven Networks, Inc. System of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US20140325346A1 (en) * 2012-01-20 2014-10-30 Jerry J. Liu Shortened Network Address Linking to Image Representation of Web Page
US8903954B2 (en) 2010-11-22 2014-12-02 Seven Networks, Inc. Optimization of resource polling intervals to satisfy mobile device requests
US8909202B2 (en) 2012-01-05 2014-12-09 Seven Networks, Inc. Detection and management of user interactions with foreground applications on a mobile device in distributed caching
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
US20150012614A1 (en) * 2013-03-15 2015-01-08 Instart Logic, Inc. Efficient delivery of webpages
US8934414B2 (en) 2011-12-06 2015-01-13 Seven Networks, Inc. Cellular or WiFi mobile traffic optimization based on public or private network destination
US9002828B2 (en) 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US9021021B2 (en) 2011-12-14 2015-04-28 Seven Networks, Inc. Mobile network reporting and usage analytics system and method aggregated using a distributed traffic optimization system
US9043433B2 (en) 2010-07-26 2015-05-26 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
US20150154313A1 (en) * 2011-09-19 2015-06-04 Beijing Qihoo Technology Company Limited A method, device, browser and program for accessing web page
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
US9075893B1 (en) * 2011-02-25 2015-07-07 Amazon Technologies, Inc. Providing files with cacheable portions
US9084105B2 (en) 2011-04-19 2015-07-14 Seven Networks, Inc. Device resources sharing for network resource conservation
US20150256607A1 (en) * 2014-03-06 2015-09-10 Samsung Electronics Co., Ltd. Apparatus and method for improving loading time in electronic device
US9173128B2 (en) 2011-12-07 2015-10-27 Seven Networks, Llc Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
US9325662B2 (en) 2011-01-07 2016-04-26 Seven Networks, Llc System and method for reduction of mobile network traffic used for domain name system (DNS) queries
US9374385B1 (en) * 2014-11-07 2016-06-21 Area 1 Security, Inc. Remediating computer security threats using distributed sensor computers
US9398071B1 (en) 2013-01-29 2016-07-19 Amazon Technologies, Inc. Managing page-level usage data
US20160246895A1 (en) * 2013-03-15 2016-08-25 Instart Logic, Inc. Identifying correlated components of dynamic content
US9438694B1 (en) 2013-01-29 2016-09-06 Amazon Technologies, Inc. Managing page-level usage data
US9479476B2 (en) 2008-03-31 2016-10-25 Amazon Technologies, Inc. Processing of DNS queries
US20160323414A1 (en) * 2015-04-29 2016-11-03 International Business Machines Corporation Managing Data Access on a Computing Device
US9497259B1 (en) 2010-09-28 2016-11-15 Amazon Technologies, Inc. Point of presence management in request routing
US9495338B1 (en) 2010-01-28 2016-11-15 Amazon Technologies, Inc. Content distribution network
US20160344831A1 (en) * 2015-05-21 2016-11-24 Google Inc. Proxy service for content requests
US20160352858A1 (en) * 2015-05-29 2016-12-01 Sap Se Plug-in cache
US9525659B1 (en) 2012-09-04 2016-12-20 Amazon Technologies, Inc. Request routing utilizing point of presence load information
US9544394B2 (en) 2008-03-31 2017-01-10 Amazon Technologies, Inc. Network resource identification
US9571389B2 (en) 2008-03-31 2017-02-14 Amazon Technologies, Inc. Request routing based on class
US9577889B1 (en) 2013-01-29 2017-02-21 Amazon Technologies, Inc. Managing page-level usage data
US9590946B2 (en) 2008-11-17 2017-03-07 Amazon Technologies, Inc. Managing content delivery network service providers
US9608957B2 (en) 2008-06-30 2017-03-28 Amazon Technologies, Inc. Request routing using network computing components
US9621660B2 (en) 2008-03-31 2017-04-11 Amazon Technologies, Inc. Locality based content distribution
US9628554B2 (en) 2012-02-10 2017-04-18 Amazon Technologies, Inc. Dynamic content delivery
US20170111466A1 (en) * 2015-07-22 2017-04-20 International Business Machines Corporation Optimizing Bandwidth Usage and Improving Performance for Web Page Caching
US9658747B2 (en) 2013-10-01 2017-05-23 Microsoft Technology Licensing, Llc Virtual tabs supporting web content suspension
US9712325B2 (en) 2009-09-04 2017-07-18 Amazon Technologies, Inc. Managing secure content in a content delivery network
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US9734472B2 (en) 2008-11-17 2017-08-15 Amazon Technologies, Inc. Request routing utilizing cost information
US9742795B1 (en) 2015-09-24 2017-08-22 Amazon Technologies, Inc. Mitigating network attacks
US9774619B1 (en) 2015-09-24 2017-09-26 Amazon Technologies, Inc. Mitigating network attacks
US9787599B2 (en) 2008-11-17 2017-10-10 Amazon Technologies, Inc. Managing content delivery network service providers
US9785621B2 (en) 2012-11-26 2017-10-10 Akamai Technologies, Inc. Progressive consolidation of web page resources
US9787775B1 (en) 2010-09-28 2017-10-10 Amazon Technologies, Inc. Point of presence management in request routing
US9794216B2 (en) 2010-09-28 2017-10-17 Amazon Technologies, Inc. Request routing in a networked environment
US9794281B1 (en) 2015-09-24 2017-10-17 Amazon Technologies, Inc. Identifying sources of network attacks
US9800539B2 (en) 2010-09-28 2017-10-24 Amazon Technologies, Inc. Request routing management based on network components
US9813480B2 (en) 2015-01-08 2017-11-07 Instart Logic, Inc. Placeholders for dynamic components in HTML streaming
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US9832141B1 (en) 2015-05-13 2017-11-28 Amazon Technologies, Inc. Routing based request correlation
US9888089B2 (en) 2008-03-31 2018-02-06 Amazon Technologies, Inc. Client side cache management
US9887931B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887932B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9893957B2 (en) 2009-10-02 2018-02-13 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US9912740B2 (en) 2008-06-30 2018-03-06 Amazon Technologies, Inc. Latency measurement in resource requests
US9930131B2 (en) 2010-11-22 2018-03-27 Amazon Technologies, Inc. Request routing processing
US9929959B2 (en) 2013-06-04 2018-03-27 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US9954934B2 (en) 2008-03-31 2018-04-24 Amazon Technologies, Inc. Content delivery reconciliation
US9985927B2 (en) 2008-11-17 2018-05-29 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US9992303B2 (en) 2007-06-29 2018-06-05 Amazon Technologies, Inc. Request routing utilizing client location information
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10015237B2 (en) 2010-09-28 2018-07-03 Amazon Technologies, Inc. Point of presence management in request routing
US10015241B2 (en) 2012-09-20 2018-07-03 Amazon Technologies, Inc. Automated profiling of resource usage
US10021179B1 (en) 2012-02-21 2018-07-10 Amazon Technologies, Inc. Local resource delivery network
US10027582B2 (en) 2007-06-29 2018-07-17 Amazon Technologies, Inc. Updating routing information based on client location
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US10079742B1 (en) 2010-09-28 2018-09-18 Amazon Technologies, Inc. Latency measurement in resource requests
US10091289B2 (en) 2013-03-15 2018-10-02 Instart Logic, Inc. Provisional execution of dynamic content component
US10091292B1 (en) * 2013-09-25 2018-10-02 Open Text Corporation Method and system for cache data analysis for enterprise content management systems
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US10157135B2 (en) 2008-03-31 2018-12-18 Amazon Technologies, Inc. Cache optimization
US10162753B2 (en) 2009-06-16 2018-12-25 Amazon Technologies, Inc. Managing resources using resource expiration data
US10205698B1 (en) 2012-12-19 2019-02-12 Amazon Technologies, Inc. Source-dependent address resolution
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US10225362B2 (en) 2012-06-11 2019-03-05 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US10230819B2 (en) 2009-03-27 2019-03-12 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10264062B2 (en) 2009-03-27 2019-04-16 Amazon Technologies, Inc. Request routing using a popularity identifier to identify a cache component
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10387523B2 (en) * 2013-12-30 2019-08-20 Oath Inc. Smart content pre-loading on client devices
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US10469513B2 (en) 2016-10-05 2019-11-05 Amazon Technologies, Inc. Encrypted network addresses
US10491534B2 (en) 2009-03-27 2019-11-26 Amazon Technologies, Inc. Managing resources and entries in tracking information in resource cache components
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
US10601767B2 (en) 2009-03-27 2020-03-24 Amazon Technologies, Inc. DNS query processing based on application information
US10616179B1 (en) 2015-06-25 2020-04-07 Amazon Technologies, Inc. Selective routing of domain name system (DNS) requests
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US10789315B1 (en) * 2017-07-19 2020-09-29 United Services Automobile Association (Usaa) Content curation application and graphical user interface
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
US11113455B2 (en) * 2013-12-15 2021-09-07 Microsoft Technology Licensing, Llc Web page rendering on wireless devices
CN114245147A (en) * 2022-02-24 2022-03-25 檀沐信息科技(深圳)有限公司 Streaming media content distribution method and system
US11290418B2 (en) 2017-09-25 2022-03-29 Amazon Technologies, Inc. Hybrid content request routing system
US20220138401A1 (en) * 2020-11-05 2022-05-05 OpenFin Inc. Presenting web content based on rules
US11379425B1 (en) * 2013-12-18 2022-07-05 Open Text Corporation Optimizing synchronization of content management servers
US11604667B2 (en) 2011-04-27 2023-03-14 Amazon Technologies, Inc. Optimized deployment based upon customer locality
US20230083822A1 (en) * 2021-09-16 2023-03-16 International Business Machines Corporation Optimized rendering of web pages

Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2021426A (en) * 1934-11-26 1935-11-19 Frederick W Quackenboss Packing container
US5611049A (en) * 1992-06-03 1997-03-11 Pitts; William M. System for accessing distributed data cache channel at each network node to pass requests and data
US5884098A (en) * 1996-04-18 1999-03-16 Emc Corporation RAID controller system utilizing front end and back end caching systems including communication path connecting two caching systems and synchronizing allocation of blocks in caching systems
US5898835A (en) * 1996-08-16 1999-04-27 Electronic Data Systems Corporation System and method for remotely executing a command
US5931904A (en) * 1996-10-11 1999-08-03 At&T Corp. Method for reducing the delay between the time a data page is requested and the time the data page is displayed
US5983227A (en) * 1997-06-12 1999-11-09 Yahoo, Inc. Dynamic page generator
US5988847A (en) * 1997-08-22 1999-11-23 Honeywell Inc. Systems and methods for implementing a dynamic cache in a supervisory control system
US6038033A (en) * 1997-08-20 2000-03-14 Lexmark International, Inc. Method and apparatus for compressing and decompressing print data in the background operations of a printer
US6085234A (en) * 1994-11-28 2000-07-04 Inca Technology, Inc. Remote file services network-infrastructure cache
US6128655A (en) * 1998-07-10 2000-10-03 International Business Machines Corporation Distribution mechanism for filtering, formatting and reuse of web based content
US6249844B1 (en) * 1998-11-13 2001-06-19 International Business Machines Corporation Identifying, processing and caching object fragments in a web environment
US20020004813A1 (en) * 2000-03-08 2002-01-10 Alok Agrawal Methods and systems for partial page caching of dynamically generated content
US20020049834A1 (en) * 2000-08-24 2002-04-25 Ingo Molnar Embedded protocol objects
US20030009563A1 (en) * 1997-07-31 2003-01-09 At&T Corp. Method for client-side inclusion of data elements
US20030046365A1 (en) * 2001-09-04 2003-03-06 Schlumberger Technology Corporation System and method for caching content
US20030078964A1 (en) * 2001-06-04 2003-04-24 Nct Group, Inc. System and method for reducing the time to deliver information from a communications network to a user
US20030140143A1 (en) * 2002-01-24 2003-07-24 International Business Machines Corporation Method and apparatus for web farm traffic control
US20040015538A1 (en) * 2002-07-18 2004-01-22 Agarwalla Rajesh S. Method and system for generating auxiliary-server cache identifiers
US20040064642A1 (en) * 2002-10-01 2004-04-01 James Roskind Automatic browser web cache resizing system
US20040117839A1 (en) * 2002-08-17 2004-06-17 Watson Scott F. System for the delivery and dynamic presentation of large media assets over bandwidth constrained networks
US6760756B1 (en) * 1999-06-23 2004-07-06 Mangosoft Corporation Distributed virtual web cache implemented entirely in software
US20060080397A1 (en) * 2004-10-08 2006-04-13 Marc Chene Content management across shared, mobile file systems
US7386694B1 (en) * 2002-12-17 2008-06-10 Symantec Operating Corporation System and method for reading mirrored data
US7925738B2 (en) * 2003-12-18 2011-04-12 Hewlett-Packard Development Company, L.P. Analytical cache performance model for a media server

Patent Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2021426A (en) * 1934-11-26 1935-11-19 Frederick W Quackenboss Packing container
US5611049A (en) * 1992-06-03 1997-03-11 Pitts; William M. System for accessing distributed data cache channel at each network node to pass requests and data
US6085234A (en) * 1994-11-28 2000-07-04 Inca Technology, Inc. Remote file services network-infrastructure cache
US5884098A (en) * 1996-04-18 1999-03-16 Emc Corporation RAID controller system utilizing front end and back end caching systems including communication path connecting two caching systems and synchronizing allocation of blocks in caching systems
US5898835A (en) * 1996-08-16 1999-04-27 Electronic Data Systems Corporation System and method for remotely executing a command
US5931904A (en) * 1996-10-11 1999-08-03 At&T Corp. Method for reducing the delay between the time a data page is requested and the time the data page is displayed
US5983227A (en) * 1997-06-12 1999-11-09 Yahoo, Inc. Dynamic page generator
US20030009563A1 (en) * 1997-07-31 2003-01-09 At&T Corp. Method for client-side inclusion of data elements
US6038033A (en) * 1997-08-20 2000-03-14 Lexmark International, Inc. Method and apparatus for compressing and decompressing print data in the background operations of a printer
US5988847A (en) * 1997-08-22 1999-11-23 Honeywell Inc. Systems and methods for implementing a dynamic cache in a supervisory control system
US6128655A (en) * 1998-07-10 2000-10-03 International Business Machines Corporation Distribution mechanism for filtering, formatting and reuse of web based content
US6249844B1 (en) * 1998-11-13 2001-06-19 International Business Machines Corporation Identifying, processing and caching object fragments in a web environment
US6760756B1 (en) * 1999-06-23 2004-07-06 Mangosoft Corporation Distributed virtual web cache implemented entirely in software
US20020004813A1 (en) * 2000-03-08 2002-01-10 Alok Agrawal Methods and systems for partial page caching of dynamically generated content
US7509404B2 (en) * 2000-03-08 2009-03-24 Oracle International Corporation Methods and systems for partial page caching of dynamically generated content
US20020049834A1 (en) * 2000-08-24 2002-04-25 Ingo Molnar Embedded protocol objects
US20030078964A1 (en) * 2001-06-04 2003-04-24 Nct Group, Inc. System and method for reducing the time to deliver information from a communications network to a user
US20030046365A1 (en) * 2001-09-04 2003-03-06 Schlumberger Technology Corporation System and method for caching content
US20030140143A1 (en) * 2002-01-24 2003-07-24 International Business Machines Corporation Method and apparatus for web farm traffic control
US20040015538A1 (en) * 2002-07-18 2004-01-22 Agarwalla Rajesh S. Method and system for generating auxiliary-server cache identifiers
US20040117839A1 (en) * 2002-08-17 2004-06-17 Watson Scott F. System for the delivery and dynamic presentation of large media assets over bandwidth constrained networks
US20040064642A1 (en) * 2002-10-01 2004-04-01 James Roskind Automatic browser web cache resizing system
US7386694B1 (en) * 2002-12-17 2008-06-10 Symantec Operating Corporation System and method for reading mirrored data
US7925738B2 (en) * 2003-12-18 2011-04-12 Hewlett-Packard Development Company, L.P. Analytical cache performance model for a media server
US20060080397A1 (en) * 2004-10-08 2006-04-13 Marc Chene Content management across shared, mobile file systems

Cited By (244)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8811952B2 (en) 2002-01-08 2014-08-19 Seven Networks, Inc. Mobile device power management in data synchronization over a mobile network with or without a trigger notification
US20080288722A1 (en) * 2005-04-19 2008-11-20 Streamezzo Method for Optimization of the Management of a Server Cache Which May be Consulted by Client Terminals with Differing Characteristics
US8275940B2 (en) * 2005-04-19 2012-09-25 Streamezzo Method and device for optimisation of the management of a server cache which may be consulted by client terminals with differing characteristics
US8839412B1 (en) 2005-04-21 2014-09-16 Seven Networks, Inc. Flexible real-time inbox access
US8761756B2 (en) 2005-06-21 2014-06-24 Seven Networks International Oy Maintaining an IP connection in a mobile network
US20080010359A1 (en) * 2006-07-10 2008-01-10 Jeffrey Mark Achtermann Computer implemented method and system for managing server-based rendering of messages in a heterogeneous environment
US20100088612A1 (en) * 2006-12-14 2010-04-08 Alibaba Group Holding Limited Method and System for Displaying Web Page
US8341177B1 (en) * 2006-12-28 2012-12-25 Symantec Operating Corporation Automated dereferencing of electronic communications for archival
US20080228920A1 (en) * 2007-03-16 2008-09-18 Souders Steven K System and method for resource aggregation and distribution
US8774844B2 (en) 2007-06-01 2014-07-08 Seven Networks, Inc. Integrated messaging
US8805425B2 (en) 2007-06-01 2014-08-12 Seven Networks, Inc. Integrated messaging
US9992303B2 (en) 2007-06-29 2018-06-05 Amazon Technologies, Inc. Request routing utilizing client location information
US10027582B2 (en) 2007-06-29 2018-07-17 Amazon Technologies, Inc. Updating routing information based on client location
US9002828B2 (en) 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
US8838744B2 (en) 2008-01-28 2014-09-16 Seven Networks, Inc. Web-based access to data objects
US8799410B2 (en) 2008-01-28 2014-08-05 Seven Networks, Inc. System and method of a relay server for managing communications and notification between a mobile device and a web access server
US9544394B2 (en) 2008-03-31 2017-01-10 Amazon Technologies, Inc. Network resource identification
US10645149B2 (en) 2008-03-31 2020-05-05 Amazon Technologies, Inc. Content delivery reconciliation
US10511567B2 (en) 2008-03-31 2019-12-17 Amazon Technologies, Inc. Network resource identification
US10530874B2 (en) 2008-03-31 2020-01-07 Amazon Technologies, Inc. Locality based content distribution
US10554748B2 (en) * 2008-03-31 2020-02-04 Amazon Technologies, Inc. Content management
US9621660B2 (en) 2008-03-31 2017-04-11 Amazon Technologies, Inc. Locality based content distribution
US9571389B2 (en) 2008-03-31 2017-02-14 Amazon Technologies, Inc. Request routing based on class
US11909639B2 (en) 2008-03-31 2024-02-20 Amazon Technologies, Inc. Request routing based on class
US20130013790A1 (en) * 2008-03-31 2013-01-10 Swaminathan Sivasubramanian Content management
US10305797B2 (en) 2008-03-31 2019-05-28 Amazon Technologies, Inc. Request routing based on class
US11451472B2 (en) 2008-03-31 2022-09-20 Amazon Technologies, Inc. Request routing based on class
US10771552B2 (en) 2008-03-31 2020-09-08 Amazon Technologies, Inc. Content management
US9479476B2 (en) 2008-03-31 2016-10-25 Amazon Technologies, Inc. Processing of DNS queries
US10797995B2 (en) 2008-03-31 2020-10-06 Amazon Technologies, Inc. Request routing based on class
US9888089B2 (en) 2008-03-31 2018-02-06 Amazon Technologies, Inc. Client side cache management
US10158729B2 (en) 2008-03-31 2018-12-18 Amazon Technologies, Inc. Locality based content distribution
US11194719B2 (en) 2008-03-31 2021-12-07 Amazon Technologies, Inc. Cache optimization
US9887915B2 (en) 2008-03-31 2018-02-06 Amazon Technologies, Inc. Request routing based on class
US9894168B2 (en) 2008-03-31 2018-02-13 Amazon Technologies, Inc. Locality based content distribution
US9954934B2 (en) 2008-03-31 2018-04-24 Amazon Technologies, Inc. Content delivery reconciliation
US11245770B2 (en) 2008-03-31 2022-02-08 Amazon Technologies, Inc. Locality based content distribution
US10157135B2 (en) 2008-03-31 2018-12-18 Amazon Technologies, Inc. Cache optimization
US9608957B2 (en) 2008-06-30 2017-03-28 Amazon Technologies, Inc. Request routing using network computing components
US9912740B2 (en) 2008-06-30 2018-03-06 Amazon Technologies, Inc. Latency measurement in resource requests
US8707325B2 (en) * 2008-10-01 2014-04-22 Telefonaktiebolaget L M Ericsson (Publ) Retrieving an object
US20110191791A1 (en) * 2008-10-01 2011-08-04 Nicolas Seyvet Retrieving an object
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
US11283715B2 (en) 2008-11-17 2022-03-22 Amazon Technologies, Inc. Updating routing information based on client location
US9590946B2 (en) 2008-11-17 2017-03-07 Amazon Technologies, Inc. Managing content delivery network service providers
US9734472B2 (en) 2008-11-17 2017-08-15 Amazon Technologies, Inc. Request routing utilizing cost information
US10742550B2 (en) 2008-11-17 2020-08-11 Amazon Technologies, Inc. Updating routing information based on client location
US10116584B2 (en) 2008-11-17 2018-10-30 Amazon Technologies, Inc. Managing content delivery network service providers
US10523783B2 (en) 2008-11-17 2019-12-31 Amazon Technologies, Inc. Request routing utilizing client location information
US11115500B2 (en) 2008-11-17 2021-09-07 Amazon Technologies, Inc. Request routing utilizing client location information
US9985927B2 (en) 2008-11-17 2018-05-29 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US11811657B2 (en) 2008-11-17 2023-11-07 Amazon Technologies, Inc. Updating routing information based on client location
US9787599B2 (en) 2008-11-17 2017-10-10 Amazon Technologies, Inc. Managing content delivery network service providers
US10264062B2 (en) 2009-03-27 2019-04-16 Amazon Technologies, Inc. Request routing using a popularity identifier to identify a cache component
US10230819B2 (en) 2009-03-27 2019-03-12 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US10601767B2 (en) 2009-03-27 2020-03-24 Amazon Technologies, Inc. DNS query processing based on application information
US10574787B2 (en) 2009-03-27 2020-02-25 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US10491534B2 (en) 2009-03-27 2019-11-26 Amazon Technologies, Inc. Managing resources and entries in tracking information in resource cache components
US8819598B1 (en) 2009-04-15 2014-08-26 Sprint Communications Company L.P. Multipage navigation on a small screen device
US8141003B1 (en) * 2009-04-15 2012-03-20 Sprint Communications Company L.P. Multipage navigation on a small screen device
US10162753B2 (en) 2009-06-16 2018-12-25 Amazon Technologies, Inc. Managing resources using resource expiration data
US10521348B2 (en) 2009-06-16 2019-12-31 Amazon Technologies, Inc. Managing resources using resource expiration data
US10783077B2 (en) 2009-06-16 2020-09-22 Amazon Technologies, Inc. Managing resources using resource expiration data
US20100325615A1 (en) * 2009-06-23 2010-12-23 Myspace Inc. Method and system for capturing web-page information through web-browser plugin
US20120226972A1 (en) * 2009-08-03 2012-09-06 Limelight Networks, Inc. Systems and methods thereto for acceleration of web pages access using next page optimization, caching and pre-fetching technique
US9712325B2 (en) 2009-09-04 2017-07-18 Amazon Technologies, Inc. Managing secure content in a content delivery network
US10135620B2 (en) 2009-09-04 2018-11-20 Amazon Technologis, Inc. Managing secure content in a content delivery network
US10785037B2 (en) 2009-09-04 2020-09-22 Amazon Technologies, Inc. Managing secure content in a content delivery network
US10218584B2 (en) 2009-10-02 2019-02-26 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US9893957B2 (en) 2009-10-02 2018-02-13 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US11205037B2 (en) 2010-01-28 2021-12-21 Amazon Technologies, Inc. Content distribution network
US9495338B1 (en) 2010-01-28 2016-11-15 Amazon Technologies, Inc. Content distribution network
US10506029B2 (en) 2010-01-28 2019-12-10 Amazon Technologies, Inc. Content distribution network
US9043433B2 (en) 2010-07-26 2015-05-26 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
US9049179B2 (en) 2010-07-26 2015-06-02 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
US10931738B2 (en) 2010-09-28 2021-02-23 Amazon Technologies, Inc. Point of presence management in request routing
US10097398B1 (en) 2010-09-28 2018-10-09 Amazon Technologies, Inc. Point of presence management in request routing
US9794216B2 (en) 2010-09-28 2017-10-17 Amazon Technologies, Inc. Request routing in a networked environment
US9787775B1 (en) 2010-09-28 2017-10-10 Amazon Technologies, Inc. Point of presence management in request routing
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US11632420B2 (en) 2010-09-28 2023-04-18 Amazon Technologies, Inc. Point of presence management in request routing
US11108729B2 (en) 2010-09-28 2021-08-31 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US10079742B1 (en) 2010-09-28 2018-09-18 Amazon Technologies, Inc. Latency measurement in resource requests
US10225322B2 (en) 2010-09-28 2019-03-05 Amazon Technologies, Inc. Point of presence management in request routing
US10015237B2 (en) 2010-09-28 2018-07-03 Amazon Technologies, Inc. Point of presence management in request routing
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US10778554B2 (en) 2010-09-28 2020-09-15 Amazon Technologies, Inc. Latency measurement in resource requests
US9497259B1 (en) 2010-09-28 2016-11-15 Amazon Technologies, Inc. Point of presence management in request routing
US9800539B2 (en) 2010-09-28 2017-10-24 Amazon Technologies, Inc. Request routing management based on network components
US11336712B2 (en) 2010-09-28 2022-05-17 Amazon Technologies, Inc. Point of presence management in request routing
US8700728B2 (en) 2010-11-01 2014-04-15 Seven Networks, Inc. Cache defeat detection and caching of content addressed by identifiers intended to defeat cache
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
US8782222B2 (en) 2010-11-01 2014-07-15 Seven Networks Timing of keep-alive messages used in a system for mobile network resource conservation and optimization
US9930131B2 (en) 2010-11-22 2018-03-27 Amazon Technologies, Inc. Request routing processing
US8903954B2 (en) 2010-11-22 2014-12-02 Seven Networks, Inc. Optimization of resource polling intervals to satisfy mobile device requests
US10951725B2 (en) 2010-11-22 2021-03-16 Amazon Technologies, Inc. Request routing processing
US20120166648A1 (en) * 2010-12-23 2012-06-28 Yun-Seok Oh Apparatus and method for providing a service through sharing solution providing unit in cloud computing environment
US8843635B2 (en) * 2010-12-23 2014-09-23 Kt Corporation Apparatus and method for providing a service through sharing solution providing unit in cloud computing environment
US9325662B2 (en) 2011-01-07 2016-04-26 Seven Networks, Llc System and method for reduction of mobile network traffic used for domain name system (DNS) queries
US9075893B1 (en) * 2011-02-25 2015-07-07 Amazon Technologies, Inc. Providing files with cacheable portions
US9846649B1 (en) * 2011-02-25 2017-12-19 Amazon Technologies, Inc. Providing files with cacheable portions
US9084105B2 (en) 2011-04-19 2015-07-14 Seven Networks, Inc. Device resources sharing for network resource conservation
US20120278886A1 (en) * 2011-04-27 2012-11-01 Michael Luna Detection and filtering of malware based on traffic observations made in a distributed mobile traffic management system
US8621075B2 (en) 2011-04-27 2013-12-31 Seven Metworks, Inc. Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
US11604667B2 (en) 2011-04-27 2023-03-14 Amazon Technologies, Inc. Optimized deployment based upon customer locality
US8832228B2 (en) 2011-04-27 2014-09-09 Seven Networks, Inc. System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief
US20130041970A1 (en) * 2011-08-11 2013-02-14 Sweekar Hillary Pinto Client side caching
US9594846B2 (en) * 2011-08-11 2017-03-14 Helwett-Packard Development Company, L.P. Client side caching
US20150154313A1 (en) * 2011-09-19 2015-06-04 Beijing Qihoo Technology Company Limited A method, device, browser and program for accessing web page
US20140237133A1 (en) * 2011-09-26 2014-08-21 Beijing Qihoo Technology Company Limited Page download control method, system and program for ie core browser
US8868753B2 (en) 2011-12-06 2014-10-21 Seven Networks, Inc. System of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation
US8977755B2 (en) 2011-12-06 2015-03-10 Seven Networks, Inc. Mobile device and method to utilize the failover mechanism for fault tolerance provided for mobile traffic management and network/device resource conservation
US8934414B2 (en) 2011-12-06 2015-01-13 Seven Networks, Inc. Cellular or WiFi mobile traffic optimization based on public or private network destination
US9009250B2 (en) 2011-12-07 2015-04-14 Seven Networks, Inc. Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation
GB2498064A (en) * 2011-12-07 2013-07-03 Seven Networks Inc Distributed content caching mechanism using a network operator proxy
US9173128B2 (en) 2011-12-07 2015-10-27 Seven Networks, Llc Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
US9208123B2 (en) 2011-12-07 2015-12-08 Seven Networks, Llc Mobile device having content caching mechanisms integrated with a network operator for traffic alleviation in a wireless network and methods therefor
US9021021B2 (en) 2011-12-14 2015-04-28 Seven Networks, Inc. Mobile network reporting and usage analytics system and method aggregated using a distributed traffic optimization system
US8909202B2 (en) 2012-01-05 2014-12-09 Seven Networks, Inc. Detection and management of user interactions with foreground applications on a mobile device in distributed caching
US9131397B2 (en) 2012-01-05 2015-09-08 Seven Networks, Inc. Managing cache to prevent overloading of a wireless network due to user activity
US20140325346A1 (en) * 2012-01-20 2014-10-30 Jerry J. Liu Shortened Network Address Linking to Image Representation of Web Page
US9628554B2 (en) 2012-02-10 2017-04-18 Amazon Technologies, Inc. Dynamic content delivery
US10021179B1 (en) 2012-02-21 2018-07-10 Amazon Technologies, Inc. Local resource delivery network
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
US20130275853A1 (en) * 2012-04-13 2013-10-17 Apple Inc. Method for improving backward/forward performance between certain types of dynamic web pages
US9177077B2 (en) * 2012-04-13 2015-11-03 Apple Inc. Method for improving backward/forward performance between certain types of dynamic web pages
US8806344B1 (en) * 2012-05-23 2014-08-12 Lawrence Taylor, Jr. System and method of displaying electronic database reports
US11303717B2 (en) 2012-06-11 2022-04-12 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US10225362B2 (en) 2012-06-11 2019-03-05 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US11729294B2 (en) 2012-06-11 2023-08-15 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US8806518B2 (en) * 2012-06-27 2014-08-12 Intel Corporation Performance analysis for combining remote audience responses
US8775631B2 (en) 2012-07-13 2014-07-08 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US9525659B1 (en) 2012-09-04 2016-12-20 Amazon Technologies, Inc. Request routing utilizing point of presence load information
US10542079B2 (en) 2012-09-20 2020-01-21 Amazon Technologies, Inc. Automated profiling of resource usage
US10015241B2 (en) 2012-09-20 2018-07-03 Amazon Technologies, Inc. Automated profiling of resource usage
US9785621B2 (en) 2012-11-26 2017-10-10 Akamai Technologies, Inc. Progressive consolidation of web page resources
US10205698B1 (en) 2012-12-19 2019-02-12 Amazon Technologies, Inc. Source-dependent address resolution
US10645056B2 (en) 2012-12-19 2020-05-05 Amazon Technologies, Inc. Source-dependent address resolution
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US9577889B1 (en) 2013-01-29 2017-02-21 Amazon Technologies, Inc. Managing page-level usage data
US9438694B1 (en) 2013-01-29 2016-09-06 Amazon Technologies, Inc. Managing page-level usage data
US9398071B1 (en) 2013-01-29 2016-07-19 Amazon Technologies, Inc. Managing page-level usage data
US10382572B2 (en) 2013-01-29 2019-08-13 Amazon Technologies, Inc. Managing page-level usage data
US8750123B1 (en) 2013-03-11 2014-06-10 Seven Networks, Inc. Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network
US20150012614A1 (en) * 2013-03-15 2015-01-08 Instart Logic, Inc. Efficient delivery of webpages
US20160246895A1 (en) * 2013-03-15 2016-08-25 Instart Logic, Inc. Identifying correlated components of dynamic content
US10042948B2 (en) * 2013-03-15 2018-08-07 Instart Logic, Inc. Identifying correlated components of dynamic content
US10091289B2 (en) 2013-03-15 2018-10-02 Instart Logic, Inc. Provisional execution of dynamic content component
US20160191658A1 (en) * 2013-03-15 2016-06-30 Instart Logic, Inc. Efficient delivery of webpages
US9929959B2 (en) 2013-06-04 2018-03-27 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US10374955B2 (en) 2013-06-04 2019-08-06 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
US10965754B2 (en) 2013-09-25 2021-03-30 Open Text Corporation Method and system for cache data analysis for enterprise content management systems
US20180367611A1 (en) * 2013-09-25 2018-12-20 Open Text Corporation Method and system for cache data analysis for enterprise content management systems
US10091292B1 (en) * 2013-09-25 2018-10-02 Open Text Corporation Method and system for cache data analysis for enterprise content management systems
US10498826B2 (en) * 2013-09-25 2019-12-03 Open Text Corporation Method and system for cache data analysis for enterprise content management systems
US11323515B2 (en) 2013-09-25 2022-05-03 Open Text Corporation Method and system for cache data analysis for enterprise content management systems
US10503371B2 (en) 2013-10-01 2019-12-10 Microsoft Technology Licensing, Llc Virtual tabs supporting web content suspension
US9658747B2 (en) 2013-10-01 2017-05-23 Microsoft Technology Licensing, Llc Virtual tabs supporting web content suspension
US11113455B2 (en) * 2013-12-15 2021-09-07 Microsoft Technology Licensing, Llc Web page rendering on wireless devices
US11379425B1 (en) * 2013-12-18 2022-07-05 Open Text Corporation Optimizing synchronization of content management servers
US10387523B2 (en) * 2013-12-30 2019-08-20 Oath Inc. Smart content pre-loading on client devices
US10721289B2 (en) * 2014-03-06 2020-07-21 Samsung Electronics Co., Ltd Apparatus and method for improving loading time in electronic device
US20150256607A1 (en) * 2014-03-06 2015-09-10 Samsung Electronics Co., Ltd. Apparatus and method for improving loading time in electronic device
US10084815B2 (en) 2014-11-07 2018-09-25 Area 1 Security, Inc. Remediating computer security threats using distributed sensor computers
US9374385B1 (en) * 2014-11-07 2016-06-21 Area 1 Security, Inc. Remediating computer security threats using distributed sensor computers
US9712557B2 (en) 2014-11-07 2017-07-18 Area 1 Security, Inc. Remediating computer security threats using distributed sensor computers
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US11863417B2 (en) 2014-12-18 2024-01-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10728133B2 (en) 2014-12-18 2020-07-28 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US11381487B2 (en) 2014-12-18 2022-07-05 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10931731B2 (en) 2015-01-08 2021-02-23 Akamai Technologies, Inc. Adaptive learning periods in HTML streaming
US9998521B2 (en) 2015-01-08 2018-06-12 Instart Logic, Inc. HTML streaming
US10425464B2 (en) 2015-01-08 2019-09-24 Instart Logic, Inc. Adaptive learning periods in HTML streaming
US10382520B2 (en) 2015-01-08 2019-08-13 Instart Logic, Inc. Placeholders for dynamic components in HTML streaming
US9813480B2 (en) 2015-01-08 2017-11-07 Instart Logic, Inc. Placeholders for dynamic components in HTML streaming
WO2016141079A3 (en) * 2015-03-03 2016-12-29 Instart Logic, Inc. Identifying correlated components of dynamic content
US11297140B2 (en) 2015-03-23 2022-04-05 Amazon Technologies, Inc. Point of presence based data uploading
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US9887932B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887931B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US10469355B2 (en) 2015-03-30 2019-11-05 Amazon Technologies, Inc. Traffic surge management for points of presence
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US20160323414A1 (en) * 2015-04-29 2016-11-03 International Business Machines Corporation Managing Data Access on a Computing Device
US9961126B2 (en) * 2015-04-29 2018-05-01 International Business Machines Corporation Managing data access on a computing device
US9832141B1 (en) 2015-05-13 2017-11-28 Amazon Technologies, Inc. Routing based request correlation
US10691752B2 (en) 2015-05-13 2020-06-23 Amazon Technologies, Inc. Routing based request correlation
US11461402B2 (en) 2015-05-13 2022-10-04 Amazon Technologies, Inc. Routing based request correlation
US10180993B2 (en) 2015-05-13 2019-01-15 Amazon Technologies, Inc. Routing based request correlation
US20160344831A1 (en) * 2015-05-21 2016-11-24 Google Inc. Proxy service for content requests
US20160352858A1 (en) * 2015-05-29 2016-12-01 Sap Se Plug-in cache
US10129363B2 (en) * 2015-05-29 2018-11-13 Sap Se Plug-in cache
US10616179B1 (en) 2015-06-25 2020-04-07 Amazon Technologies, Inc. Selective routing of domain name system (DNS) requests
US10277703B2 (en) 2015-07-22 2019-04-30 International Business Machines Corporation Optimizing bandwidth usage and improving performance for web page caching
US20170111466A1 (en) * 2015-07-22 2017-04-20 International Business Machines Corporation Optimizing Bandwidth Usage and Improving Performance for Web Page Caching
US9749437B2 (en) * 2015-07-22 2017-08-29 International Business Machines Corporation Optimizing bandwidth usage and improving performance for web page caching
US9749439B2 (en) * 2015-07-22 2017-08-29 International Business Machines Corporation Optimizing bandwidth usage and improving performance for web page caching
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
US10200402B2 (en) 2015-09-24 2019-02-05 Amazon Technologies, Inc. Mitigating network attacks
US9742795B1 (en) 2015-09-24 2017-08-22 Amazon Technologies, Inc. Mitigating network attacks
US9794281B1 (en) 2015-09-24 2017-10-17 Amazon Technologies, Inc. Identifying sources of network attacks
US9774619B1 (en) 2015-09-24 2017-09-26 Amazon Technologies, Inc. Mitigating network attacks
US11134134B2 (en) 2015-11-10 2021-09-28 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10666756B2 (en) 2016-06-06 2020-05-26 Amazon Technologies, Inc. Request management for hierarchical cache
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US11463550B2 (en) 2016-06-06 2022-10-04 Amazon Technologies, Inc. Request management for hierarchical cache
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US11457088B2 (en) 2016-06-29 2022-09-27 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US10516590B2 (en) 2016-08-23 2019-12-24 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10469442B2 (en) 2016-08-24 2019-11-05 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US11330008B2 (en) 2016-10-05 2022-05-10 Amazon Technologies, Inc. Network addresses with encoded DNS-level information
US10469513B2 (en) 2016-10-05 2019-11-05 Amazon Technologies, Inc. Encrypted network addresses
US10616250B2 (en) 2016-10-05 2020-04-07 Amazon Technologies, Inc. Network addresses with encoded DNS-level information
US10505961B2 (en) 2016-10-05 2019-12-10 Amazon Technologies, Inc. Digitally signed network address
US11762703B2 (en) 2016-12-27 2023-09-19 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US10789315B1 (en) * 2017-07-19 2020-09-29 United Services Automobile Association (Usaa) Content curation application and graphical user interface
US11704378B1 (en) 2017-07-19 2023-07-18 United Services Automobile Association (Usaa) Content curation application and graphical user interface
US11423105B1 (en) 2017-07-19 2022-08-23 United Services Automobile Association (Usaa) Content curation application and graphical user interface
US11290418B2 (en) 2017-09-25 2022-03-29 Amazon Technologies, Inc. Hybrid content request routing system
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
US11362986B2 (en) 2018-11-16 2022-06-14 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system
US20220138401A1 (en) * 2020-11-05 2022-05-05 OpenFin Inc. Presenting web content based on rules
US11790152B2 (en) * 2020-11-05 2023-10-17 OpenFin Inc. Presenting web content based on rules
US20230083822A1 (en) * 2021-09-16 2023-03-16 International Business Machines Corporation Optimized rendering of web pages
CN114245147A (en) * 2022-02-24 2022-03-25 檀沐信息科技(深圳)有限公司 Streaming media content distribution method and system

Similar Documents

Publication Publication Date Title
US20070101061A1 (en) Customized content loading mechanism for portions of a web page in real time environments
US7865843B2 (en) Dynamic toolbar for markup language document
US7085817B1 (en) Method and system for modifying requests for remote resources
US7500181B2 (en) Method for updating a portal page
US7171443B2 (en) Method, system, and software for transmission of information
US8452925B2 (en) System, method and computer program product for automatically updating content in a cache
US9111003B2 (en) Scalable derivative services
US8156429B2 (en) Method and system for accelerating downloading of web pages
US8745341B2 (en) Web server cache pre-fetching
US8621092B2 (en) Remote portlet consumer with enhanced resource URL processing
US9262544B2 (en) Translating between address representations
US20060230059A1 (en) Method and apparatus to select and deliver portable portlets
US20110131478A1 (en) Method and system for modifying script portions of requests for remote resources
KR100843913B1 (en) Method and apparatus for local ip address translation
US8539340B2 (en) Method to serve real-time data in embedded web server
US20090270076A1 (en) Performance optimizer for mobile devices website
KR100456022B1 (en) An XML-based method of supplying Web-pages and its system for non-PC information terminals
US20050257167A1 (en) Embedded Web dialog
WO2002027552A2 (en) Enhanced browsing environment
US20060026510A1 (en) Method for optimizing markup language transformations using a fragment data cache
US8725792B1 (en) Rapid loading of multiple frames' content

Legal Events

Date Code Title Description
AS Assignment

Owner name: MACHINES CORPORATION, INTERNATIONAL BUSINESS, NEW

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BASKARAN, GURUPRASAD;BHOGAL, KULVIR SINGH;NACHIMUTHU, KANMANI;AND OTHERS;REEL/FRAME:016885/0330;SIGNING DATES FROM 20050915 TO 20051026

AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BASKARAN, GURUPRASAD;BHOGAL, KULVIR S;NACHIMUTHU, KANMANI;AND OTHERS;REEL/FRAME:019721/0128;SIGNING DATES FROM 20050915 TO 20051026

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION