US20070204031A1 - Storing and retrieving user context data - Google Patents
Storing and retrieving user context data Download PDFInfo
- Publication number
- US20070204031A1 US20070204031A1 US11/359,637 US35963706A US2007204031A1 US 20070204031 A1 US20070204031 A1 US 20070204031A1 US 35963706 A US35963706 A US 35963706A US 2007204031 A1 US2007204031 A1 US 2007204031A1
- Authority
- US
- United States
- Prior art keywords
- message
- context data
- network
- data
- network message
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1027—Persistence of sessions during load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
Definitions
- the invention generally relates to servers storing user-specific state information and, specifically, to network devices such as routers hosting user-specific state information for the purpose of providing personalized content on the World Wide Web.
- Cookies form the building blocks for most user computer-specific context data storage on the web, but they have several serious limitations. Cookies are limited in size, finite in quantity, and can be arbitrarily modified or deleted by the user. They also pose privacy and security concerns, which limit their suitability for storage of many kinds of context data that would be desirable to store. For example, it may be desirable for a website to automatically store a user's personal information for the purpose of facilitating future visits from the same user, but storing the user's personal information in a cookie makes the information potentially vulnerable to disclosure or malicious modification by other programs or websites, yielding an undesirable result.
- cookies or other techniques to store index data in the user computer. This index data is then used to retrieve the user computer-specific context data from a database of context data stored at the web server.
- the user computer-specific context data can be stored securely at the web server while still being uniquely associated with various user computers through use of cookies.
- Web servers are highly active systems with many processes running in parallel. It is quite common for web servers to crash, freeze, restart, or slow due to high volume of traffic. These events can make the website and any stored context data unavailable for a period of time, and, in some cases, result in the loss of context data entirely.
- load balancing does not address the problem of potential context data loss due to server failure. If context data is stored on a web server that fails, load balancing techniques may be able to continue web service without interruption, but the context data stored on that web server may be lost. Load balancing alone does not protect context data from server loss.
- context data on a web server poses challenges for maintaining or upgrading the web server, as context data can persist for long periods of time, and it is not generally known when the return of a certain user computer will necessitate access to certain context data.
- Context data can be stored in a context server external to the web server.
- storing context data external to the web server introduces several extra steps. In order to process a request, the web server must receive the request, determine the need for context, request the context data from the external context server, wait for a response, process that response, write the updated context data back to the external state server, and finally return the web request. These extra steps introduce delay, complexity, and the potential for failure.
- What is needed is a method for storing and retrieving user computer-specific context data securely and for an indefinite period of time, in a manner that supports redundancy and is compatible with load-balancing techniques, and without adding unnecessary complexity or steps to the method of the web server.
- the invention is a system and method for storing context data in a network device located in the data path between the user computer and the web server, thereby allowing for the secure and ongoing storage of user computer-specific context data without adding unnecessary complexity or steps to existing web server methods, while at the same time supporting redundancy and facilitating effective load-balancing.
- the invention reduces the complexity of the web server and improves handling of server failure. Furthermore, the total amount of network traffic is reduced, as the web server does not have to make an additional request, and subsequent update of context data, to an external context data server.
- the context data server is located in the data path between the user computer and the web server; thus, the system of the present invention has the opportunity to intercept messages from the user computer to the web server and from the web server to the user computer.
- the context data server stores context data in a context database by reading context data from messages passing between the web server and the user computer.
- the context data server may also insert or use index data in messages passing between the web server and the user computer to facilitate the retrieval of context data.
- the context data server may also remove context data or index data from messages passing between the web server and the user computer.
- the context data server may also add context data from the context database to messages passing between the user computer and the web server.
- the data necessary for the storage, retrieval, and management of a context database are piggy-backed on standard network messages passing between the web server and the user computer and between the user computer and the web server.
- the user-specific context data is stored in a router in the data path between the user and the web server.
- the router performs the context data storage and retrieval functions herein described in addition to the functions commonly performed by a router.
- FIG. 1 ( a ) is a block diagram illustrating a combined context data server and router, connected in the data path of a typical wide area network connection, according to one embodiment of the present invention.
- FIG. 1 ( b ) is a block diagram illustrating a context data server connected in the data path of a typical wide area network connection, according to one embodiment of the present invention.
- FIG. 1 ( c ) is a block diagram illustrating a combined context data server and router, connected in the data path of a typical wide area network connection, according to one embodiment of the present invention.
- FIG. 2 is a block diagram illustrating the hardware configuration of a context data server, according to one embodiment of the present invention.
- FIG. 3 illustrates the storage and retrieval of context data at a context data server in a typical exchange with a web server, according to several embodiment of the present invention.
- FIG. 4 is a flow diagram illustrating a method for retrieving context data in a context data server, according to one embodiment of the present invention.
- FIG. 5 a is a flow diagram illustrating a method for storing context data in a context data server, according to one embodiment of the present invention.
- FIG. 5 b is a flow diagram illustrating a method for storing context data in a context data server, according to another embodiment of the present invention.
- FIG. 6 is a flow diagram illustrating a method for responding to a page request containing context data, according to one embodiment of the present invention.
- the context data server is located in the data path between the user computer and the web server in the sense that the system of the present invention has the opportunity to intercept messages from the user computer to the web server and from the web server to the user computer.
- the context data server stores and retrieves context data in a context database by reading context data from messages passing between the web server and the user computer.
- the context data server may also insert or use index data in messages passing between the web server and the user computer to facilitate the retrieval of context data.
- the context data server may also remove context data or index data from messages passing between the web server and the user computer.
- user computer will be employed throughout this disclosure to refer any electronic device capable of sending and receiving messages on a network.
- user computers includes personal computers, enterprise computing systems, cellphones, handheld devices, personal digital assistants (PDAs), gaming consoles, and portable entertainment systems.
- PDAs personal digital assistants
- gaming consoles and portable entertainment systems.
- portable entertainment systems One skilled in the art will recognize that any number of devices may be implemented to fulfill the role of the ‘user computer’ described herein without departing from the scope of the present invention.
- the context data server may use methods to associate context data with a specific user, or it may use methods to associate context data with a specific user computer. Some computer systems support multiple users on the same computer, and some users may use multiple computers.
- the invention is equally applicable to both user-specific context data and user computer-specific context data. For the purposes of illustration herein all such context data will be referred to as user computer-specific context data without limiting the scope of the invention.
- Context data can be any data that it is desired to have available when a user or user computer makes a future data request.
- a web server may be desirable for a web server to store shopping cart information relating to a specific user, for a file server to store a history of file accesses relating to a specific user computer, or for a game server to store game-play information relating to a specific user.
- the invention assists a server in responding to data requests by storing and retrieving data pertaining to the user or user computer originating those requests.
- Context data may come in many forms, and the invention is applicable to all such forms.
- One skilled in the art will recognize that other forms of context data having other uses may be stored and/or processed according to the techniques described herein without departing from the essential characteristics of the present invention.
- the invention is frequently described herein as being useful in conjunction with HTTP requests, HTTP responses, and web servers. However, it will be apparent to one skilled in the art that the invention is useful in conjunction with any kind of data request, any kind of data response, any kind. of data server, and any form of index data.
- the context data server is described as a server for the purposes of illustrating one embodiment of the present invention. According to another embodiment of the present invention, the function of the context data server can be performed by any device capable of storing and retrieving a segment of data.
- FIG. 1 ( a ) is a block diagram illustrating a combined context data server and router, connected in the data path of a typical wide area network connection, according to one embodiment of the present invention.
- Each user computer 102 is a device capable of making requests for data over a wide area network.
- user computer 102 can be a personal computer executing a standard web browser program, or it can be a portable device requesting data using another protocol.
- Each user computer 102 is capable of storing index data at the request of a server connected to the wide area network 103 . Once stored, this index data is sent to the server as a component of future data requests.
- the index data may be stored on the user computer 102 and included in future data requests using a variety of methods.
- HTTP cookies may be used to store index data on the user computer 102 .
- HTTP-post hidden form fields, ASP.NET View State fields, and URL query strings may be used to store index data on the user computer 102 .
- Each user computer 102 may be connected to the wide area network 103 through at least one of several connection devices, including routers, modems, and wireless access points. These connection devices are not shown as such connection devices and methods are well known in the art.
- the wide area network 103 may be any network capable of connecting a user computer 102 with a web server 110 .
- the wide area network 103 is the Internet.
- the wide area network 103 is a private network.
- the wide area network 103 is capable of conveying messages bi-directionally between the user computer 102 and the wide area network access point 104 .
- the wide area network access point 104 is the point of connection between the wide area network 103 and the local area network 105 .
- the wide area network access point 104 may be a digital subscriber line modem, an analog modem, a cable modem, a network card, a broadband wireless hub, or any other device for transferring data between the wide area network 103 and the local area network 105 .
- the context data server 106 , the router 108 , and the web server 110 are depicted as components of a local area network 105 .
- the router 108 can in fact be a great distance from the web server 110 , and can further be considered as part of a separate network.
- the presentation of the context data server 106 , the router 108 , and the web server 110 as components of the local area network 105 is intended to clarify the description of the invention for the purposes of enablement and is not intended to limit the forms the invention can take.
- the local area network interfaces with a single wide area network access point 104 and includes at least one web server 110 .
- the wide area network access point 104 Connected between the wide area network access point 104 and the web server 110 is at least one router 108 .
- the router or routers 108 are configured to efficiently relay data among the web servers 110 (if multiple web servers 110 are implemented) and between a web server 110 and the wide area network access point 104 .
- Other network devices may also be connected to the local area network 105 .
- a single router 108 is depicted, with a context data server 106 adjoined.
- the router 108 is capable of receiving an incoming message and repeating it on at least one of a plurality of network ports.
- the router 108 may also modify the incoming message before repeating it, such as in the well-known method of network address translation (NAT).
- NAT network address translation
- the context data server 106 may be adjoined to the router 108 differently depending on the embodiment of the invention.
- the context data server operates using the same physical hardware (such as processor, network ports, electronic storage) as the router 108 .
- the context data server 106 shares some physical hardware (such as enclosure, power supply, and network ports) but does not share certain other physical hardware (such as processor and electronic storage).
- the context data server 106 does not share any physical hardware with the router 108 , but the context data server 106 is connected in series to at least one router 108 .
- the context data server 106 can be joined to any one of the routers 108 so long as the placement sets the context data server 106 in the data path between a web server 110 and the wide area network access point 104 .
- multiple context data servers are implemented, and are connected either in series or parallel in the data path between a web server and a wide area network access point.
- the context data server 106 is adjoined the router 108 with the highest position in the hierarchy of those routers 108 connected to web servers 110 .
- the context data server 106 is connected in such a way so that it may intercept messages originating from each user computer 102 and destined for the web server 110 and messages originating from the web server 110 and destined for each user computer 102 .
- the method of the context data server 106 will be described in greater detail in connection with FIGS. 2-5 .
- the web server 110 is connected to the router 108 .
- the web server 110 is a device capable of receiving a request for data and transmitting data in response.
- the web server 110 may be an HTTP server capable of receiving page requests and returning web pages according to the HTTP.
- the web sever 110 may be any server capable of sending datagrams according to a protocol such as the User Datagram Protocol (UDP), or the Transmission Control Protocol (TCP).
- UDP User Datagram Protocol
- TCP Transmission Control Protocol
- the web server 110 may consist of multiple devices, which in conjunction have the capabilities of a web server 110 .
- the web server 110 may be implemented using at least one of the many devices commonly available for responding to data requests.
- the web server 110 may be implemented using a standard Personal Computer (PC) and software such as Apache HTTP Server.
- the web server 110 could also be implemented, for example, using Microsoft® Internet Information Server, ASP.NET 2.0, ASP.NET 1.1, Classic ASP, JSP, IBM® Websphere, or Linux Apache PHP.
- the web server could be implemented as an online gaming server.
- One skilled in the art will recognize that these examples are not intended to be exhaustive and that other implementations of the web server are also applicable to the present invention.
- the web server 110 may also include methods and/or systems for interfacing with the context data server 106 .
- the method used by the web server 110 is illustrated in FIG. 6 .
- FIG. 1 ( b ) is a block diagram illustrating a context data server connected in the data path of a typical wide area network connection, according to one embodiment of the present invention.
- the context data server 106 is connected to the wide area network access point 104 and the web server 110 .
- the context data server 106 is not adjoined to any router 108 .
- the user computer 102 , wide area network 103 , wide area network access point 104 , and web server 110 are similar to those herein described in reference to FIG. 1 ( a ).
- the context data server 106 is connected in such a way so that it may intercept messages originating from each user computer 102 and destined for the web server 110 and messages originating from the web server 110 and destined for each user computer 102 .
- the method of the context data server 106 will be described in greater detail in FIGS. 2-5 .
- the context data server 106 operates without a router and in conjunction with a single web server 110 .
- FIG. 1 ( c ) is a block diagram illustrating a combined context data server and router, connected in the data path of a typical wide area network connection, according to one embodiment of the present invention.
- the user computer 102 , wide area network 103 , wide area network access point 104 , context data server 106 , router 108 , and web server 110 are similar to those herein described in reference to FIG. 1 ( a ).
- the load balancer 107 is connected to the wide area network access point 104 and to the router 108 .
- the load balancer 107 is capable of receiving an incoming page request and redirecting it to a web server 110 on the basis of the current availability of the various web servers 110 . For example, if web server 110 A is overloaded due to a high volume of page requests, but web server 110 B has available request-handling capability, the load balancer 107 directs incoming page requests to web server 110 B.
- the load balancer 107 may be implemented using any one of many commonly available load balancing methods. Such methods can include random allocation, round-robin allocation, weighted round-robin, least connections, and IP hash among others.
- FIG. 1 ( c ) a single router 108 is depicted, with a context data server 106 adjoined.
- the context data server 106 may be adjoined to the router 108 differently depending on the embodiment of the invention.
- the context data server 106 does not share any physical hardware with the router 108 .
- the load balancer 107 , router 108 , and context data server 106 are connected in series, and may be connected in any order, according to one embodiment of the present invention.
- the load balancer 107 may be connected between the wide area network access point 104 and the context data server 106 , or the load balancer 107 may be connected between the context data server 106 and the web server 110 .
- Other methods for connecting the wide area network access point 104 , load balancer 107 , router 108 , and the context data server 106 will be apparent to one of skill in the art without departing from the scope of the present invention.
- the context data server 106 may operate in conjunction with a load balancing device, such as the load balancer 107 .
- the load balancer 107 is adjoined to the context data server 106 .
- the load balancer 107 and the context data server 106 may share all, some, or no physical hardware, according to various embodiments of the present invention.
- FIG. 2 is a block diagram illustrating the hardware configuration of one embodiment of the context data server 106 , according to one embodiment of the present invention. As explained previously, some or all of the hardware of the context data server 106 may be shared with the router 108 . FIG. 2 illustrates the hardware of the context data server 106 as if said hardware were dedicated, but in fact, some or all of this hardware can be shared with other devices.
- the network port 202 is a standard device capable of sending and receiving messages over a network.
- the network port 208 is also a standard device capable of sending and receiving messages over a network.
- the network port 202 and the network port 208 allow the context data server 106 to be in the data path between the wide area network access point 104 and the web server 110 .
- Network messages not requiring the retrieval or storage of context data can be passed from one network device to the other without change, so that the normal operation of the network is not affected.
- network messages requiring either the retrieval or storage of context data can be read and/or modified as necessary before continuing on the data path to their destination.
- the processor 206 is a standard processor capable of executing instructions. Any standard microcomputer processor could be used to implement the processor 206 , for example, the x86 family of 32- and 64-bit processors.
- the storage device 204 includes at least one of the many common components available for electronic storage.
- the storage device 204 stores incoming and outbound network messages and instructions for the processor 206 .
- the storage device 204 also includes the context database 210 .
- the context database 210 may be a standard database capable of storing and retrieving data on the basis of some index data.
- the storage device 204 also includes a context data retriever 214 and a context data updater 216 .
- the method used by the context data retriever 214 is illustrated in greater detail in connection with FIG. 4 .
- the method used by the context data updater 216 is illustrated in greater detail in connection with FIG. 5 .
- FIG. 3 is an event trace illustrating the storage and retrieval of context data at a context data server in a typical exchange between a user computer 102 and a web server 110 , according to one embodiment of the present invention.
- FIG. 3 depicts an example in which the web server 110 is a web server and the data is requested by the user according to the HTTP.
- the invention is capable of storing and retrieving context data in conjunction with various types of servers, various types of data requests, and in conjunction with data requests according to various protocols.
- FIG. 3 depicts the reception and transmission of messages at the context data server 106 .
- these receptions and transmissions are illustrated without the intervening wide area network 103 , wide area network point 104 , and router or routers 108 .
- Various configurations of network routers and links are implicit in the arrows depicting message reception and transmission among the user computer 102 , context data server 106 , and web server 110 .
- FIG. 3 ( a ) depicts an HTTP exchange between the user computer 102 and the web server 110 not requiring the retrieval or storage of context data.
- the user computer 102 sends a page request 302 to the context data server 106 . Because the page request 302 does not contain index data, it is not necessary to retrieve any context data, so the context data server 106 forwards the message on to the web server 110 as the page request 304 .
- the web server 110 receives the page request 304 and retrieves the appropriate web page. The method for responding to a page request in the web server 110 is described in greater detail herein with reference to FIG. 6 .
- the web server 110 generates a page return, includes in the page return some index data, and transmits the resulting page return with index data 306 .
- the context data server 106 receives the page return with index data 306 . Because the page return with index data 306 does not contain context data, it is not necessary to store any context data, so the context data server 106 forwards the message on to the user computer 102 as the page return with index data 308 .
- the user computer 102 receives the page return with index data 308 .
- the user computer 102 displays or saves the page and stores the index data locally.
- Various methods for storing index data locally are available; a non-exhaustive set of examples has been given herein with reference to FIG. 1 .
- FIG. 3 ( b ) depicts an HTTP exchange between the user computer 102 and the web server 110 for which it is desired to store context data.
- the user computer 102 sends a page request 310 to the context data server 106 . Because the page request 310 does not contain index data, it is not necessary to retrieve any context data, so the context data server 106 forwards the message on to the web server 110 as the page request 312 .
- the web server 110 receives the page request 312 and retrieves the appropriate web page.
- the web server 110 generates a page return. In this case, however, the processing of the page request 312 generates some context data requiring storage.
- the web server 110 generates a page return, includes in the page return index data, inserts the context data, and transmits the resulting page return with index data and context data 314 .
- the context data server 106 receives the page return with index data and context data 314 .
- the page return with index data and context data 314 does contain context data, so the context data server 106 stores the context data in the context database.
- the method for storing context data in the context data server 106 is described in greater detail herein with reference to FIG. 5 .
- the context data server 106 removes the context data from the message and forwards the resulting page return with index data 316 to the user computer 102 .
- the user computer 102 receives the page return with index data 316 .
- the user computer 102 displays or saves the page and stores the index data locally.
- Various methods for storing index data locally are available; a non-exhaustive set of examples has been given herein with reference to FIG. 1 .
- FIG. 3 ( c ) depicts an HTTP exchange between the user computer 102 and the web server 110 requiring the retrieval and updating of context data.
- the user computer 102 sends a page request with index data 318 to the context data server 106 .
- the page request with index data 318 contains index data, so the context data server 106 searches the context database for associated context data.
- the method for retrieving context data in the context data server 106 is described in greater detail herein with reference to FIG. 4 .
- context data server 106 finds context data associated with the index data, the context data server 106 inserts that context data into the message, and forwards the resulting page request with index data and context data 320 to the web server 110 .
- the web server 110 receives the page request with index data and context data 320 and retrieves the appropriate web page.
- the web server 110 may customize or retrieve differently the web page depending on the context data.
- the web server 110 generates a page return. In this case, however, the processing of the page request with index data and context data 320 generates some new or updated context data requiring storage.
- the web server 110 generates a page return, includes in the page return either the same or different index data, inserts the new or updated context data, and transmits the resulting page return with index data and context data 322 .
- the context data server 106 receives the page return with index data and context data 322 .
- the context data server 106 stores or updates the context data in the context database appropriately.
- the context data server 106 removes the context data from the message and forwards the resulting page return with index data 324 to the user computer 102 .
- the user computer 102 receives the page return with index data 324 .
- the user computer 102 displays or saves the page as indicated by the user and stores the index data in a local cache.
- Various methods for storing index data locally are available; a non-exhaustive set of examples has been given herein with reference to FIG. 1 .
- context data server 106 in the data path between the user computer 102 and the web server 110 , context data is securely stored and retrieved without additional complication or steps on the part of either the user computer 102 or the web server 110 .
- FIG. 3 ( d ) depicts an HTTP exchange between the web server 110 A and the web server 110 B requiring the retrieval and updating of context data. Inserting a context data server in the data path between a first web server and a second web server may be useful, for example, in a confidential transaction in which the first web server processes a confidential portion of the transaction and the second web server processes a non-confidential portion of the transaction.
- the web server 110 A sends a page request with index data and context data 325 to the context data server 106 .
- the web server 110 A may send a page request with index data and context data 325 , for example, in response to a page request from a user computer not shown.
- the context data server 106 stores or updates the context data in the context database appropriately. According to one embodiment of the present invention, the context data server 106 removes the context data from the message and forwards the resulting page request with index data 326 to the web server 110 B.
- the web server 110 B receives the page request with index data 326 and retrieves the appropriate web page.
- the web server 110 B generates a page return, includes in the page return either the same or different index data and transmits the resulting page return with index data 328 .
- the page return with index data 328 contains index data, so the context data server 106 searches the context database for associated context data.
- a method for retrieving context data in the context data server 106 is described in greater detail herein with reference to FIG. 4 .
- context data server 106 finds context data associated with the index data, the context data server 106 inserts that context data into the message, and forwards the resulting page return with index data and context data 330 to the web server 110 A.
- the web server 110 A receives the page return with index data and context data 330 and handles the page return appropriately.
- the web server 110 A may customize or handle differently the web page depending on the context data.
- the web server 110 A may forward the page return, either with or without context data, on to a user computer not shown.
- FIG. 4 illustrates a method for retrieving context data in a context data server, according to one embodiment of the present invention.
- the method is performed by the context data retriever 214 .
- a network message 402 has been received by the context data server 106 .
- the network message 402 includes some limited context data 406 that has been previously stored in the context database 407 as associated with some verbose context data 410 .
- the limited context data 406 is analogous to the index data described herein with reference to FIG. 3 .
- the limited context data 406 may be any data from which it is possible to retrieve verbose context data.
- the limited context data 406 may be contained in the network message 402 in any number of manners.
- the limited context data 406 could be contained in a cookie field, a hidden form field, a View State field, or somewhere else in the network message 402 .
- Limited context data 406 could be contained in the header of the network message 402 , for example, in the case in which the user computer 102 transmits the limited context data 406 in the form of a URL query string.
- the context data retriever 214 retrieves 404 the limited context data 406 from the network message 402 .
- the context data retriever 214 searches 408 the context database 407 for verbose context data 410 retrievable by the limited context data 406 .
- the network message 402 can be an HTTP page request and the limited context data 406 can be stored in a cookie.
- the context data retriever 214 would retrieve 404 the limited context data 406 by reading the cookie in the network message 402 , where the network message 402 is an HTTP page request containing a cookie.
- the context data retriever 214 optionally removes 412 the limited context data from the network message 402 to produce a groomed network message 414 . In some embodiments it is not necessary to remove 412 the limited context data, while in other embodiments this procedure is desirable. If this optional procedure is not implemented, the groomed network message 414 is equivalent to the network message 402 .
- the context data retriever 214 inserts 416 the verbose context data 410 into the groomed network message 414 to produce a translated network message 418 .
- the translated network message 418 is ready to be sent to the web server 110 , as illustrated in FIG. 3 .
- the translated network message 418 is of a form such that the request contained therein may be processed by the web server 110 without further need for external context data retrieval.
- FIG. 5 a illustrates a method for storing context data in a context data server, according to one embodiment of the present invention.
- the method is performed by the context data updater 216 .
- a network message 502 has been received by the context data server 106 .
- the network message 502 comprises some verbose context data 514 .
- the network message 502 includes some limited context data.
- the context data updater 216 retrieves 504 limited context data 506 from the network message 502 .
- the limited context data 506 may be analogous to the index data described herein with reference to FIG. 3 .
- the limited context data 506 may be any data with which it is possible to associate verbose context data in the context database.
- the limited context data 506 may be contained in the network message 502 in any number of manners.
- the limited context data 406 could be contained in a cookie field, a hidden form field, in the header of the network message, or somewhere else in the network message 502 .
- the network message 502 can be an HTTP page response and the limited context data 506 can be contained in a cookie.
- the context data updater 216 would retrieve 504 the limited context data 506 by reading the cookie from the network message 502 , where the network message 502 is an HTTP page response containing a cookie.
- the context data updater 216 retrieves 512 verbose context data 514 from the network message 502 .
- the context data updater 216 updates 508 the context database 507 with the verbose context data 514 using the limited context data 506 as an index. If some other verbose context data is already indexed by the limited context data 506 in the context database 507 , the context data updater 216 may append or overwrite the other verbose context data with the verbose context data 514 .
- the context data updater 216 optionally removes 516 the verbose context data from the network message 502 to produce a translated network message 518 . In some embodiments it is not necessary to remove 516 the verbose context data, while in other embodiments this procedure is desirable. If this optional step is not implemented, the translated network message 518 is equivalent to the network message 502 .
- the translated network message 518 is ready to be sent to the user computer 102 , as illustrated in FIG. 3 .
- the translated network message 518 is of a form such that the request contained therein may be interpreted by the user computer 102 as a standard message, and the context database 507 has been updated to reflect changes or additions of verbose context data.
- FIG. 5 b illustrates a method for storing context data in a context data server, according to another embodiment of the present invention.
- the method is performed by the context data updater 216 .
- a network message 502 has been received by the context data server 106 .
- the network message 502 comprises some verbose context data 514 .
- the context data updater 216 generates 505 limited context data 506 .
- the limited context data 506 may be analogous to the index data described herein with reference to FIG. 3 .
- the limited context data 506 may be any data with which it is possible to associate verbose context data in the context database.
- the context data updater retrieves 512 verbose context data 514 , and updates 508 the context database 507 as described herein with reference to FIG. 5 a.
- the context data updater 216 optionally removes 516 the verbose context data from the network message 502 to produce a groomed network message 515 . If this optional step is not implemented, the groomed network message 515 is equivalent to the network message 502 .
- the context data updater 216 inserts 517 the limited context data 506 into the groomed network message 515 to produce a translated network message 518 .
- the limited context data 506 may be inserted 517 into the network message 502 in any number of manners.
- the limited context data 406 may be stored in a cookie field, a hidden form field, in the header of the translated network message 518 , or somewhere else in the translated network message 518 .
- the translated network message 518 is ready to be sent to the user computer 102 , as illustrated in FIG. 3 .
- the translated network message 518 is of a form such that the request contained therein may be interpreted by the user computer 102 as a standard message, and the context database 507 has been updated to reflect changes or additions of verbose context data.
- FIG. 6 is a flow diagram illustrating a method for responding to a page request containing context data, according to one embodiment of the present invention. In one embodiment, the method is performed by the web server 110 . While FIG. 6 illustrates an example of handling an HTTP request containing context data in a web server, it teaches a method for handling any type of data request in any type of data server. The example of HTTP has been chosen for the purpose of illustration, but does not limit the scope of the invention.
- a network message 602 has been received by the web server 110 as illustrated in FIG. 3 .
- the network message 602 corresponds to the translated network message 418 prepared by the method illustrated in FIG. 4 .
- the network message 602 contains verbose context data 606 .
- the web server 110 retrieves 604 the verbose context data 604 from the network message 602 .
- the web server 110 optionally removes 610 the verbose context data to produce a network message equivalent to the network message 402 , i.e. equivalent to the network message as originally received by the method for context data retrieval as illustrated in FIG. 4 .
- this network message is a standard HTTP request 612 . If the verbose context data 610 is stored in the network message 602 in such a way as to not interfere with the normal processing of an HTTP request, the network message 602 is already in the form of a standard HTTP request 612 , and it may not be desired to remove 610 the verbose context data.
- the web server 110 passes the verbose context data 606 and the standard HTTP request 612 to a web service application 608 .
- the web service application 608 handles the standard HTTP request 606 using any of the well known methods in the art, referring to the verbose context data 606 as necessary.
- the web service application 608 returns a standard HTTP response 614 and, in some instances, updated verbose context data 616 . If the updated verbose context data 616 is present, the web server 110 inserts 618 the updated verbose context data 616 into the standard HTTP response 614 .
- the web server 110 optionally inserts 620 limited context data into the resulting message as necessary to produce a responsive network message 622 . Examples of methods in which limited context data may be stored in a network message are given herein with reference to FIGS. 4-5 . According to one embodiment of the present invention, limited context data is inserted by the web server 110 . According to another embodiment of the present invention, limited context data is inserted by the context data updater 216 .
- the responsive network message 622 is ready to be transmitted to the context data server 106 as illustrated in FIG. 3 .
- the responsive network message 622 is of the form so that it may be processed by the context data server 106 as illustrated in FIG. 5 .
- multiple copies of the context database are maintained for the purposes of backing up context data in the event of failure of the context data server.
- Any of the well-known methods for providing redundant data services are applicable to the invention in the interest of failure prevention or response.
- Certain aspects of the present invention include process steps and instructions described herein in the form of an algorithm. It should be noted that the process steps and instructions of the present invention can be embodied in software, firmware or hardware, and when embodied in software, can be downloaded to reside on and be operated from different platforms used by a variety of operating systems.
- the present invention also relates to an apparatus for performing the operations herein.
- This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer.
- a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
- the computers referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Hardware Redundancy (AREA)
Abstract
Description
- 1. Field of the Invention
- The invention generally relates to servers storing user-specific state information and, specifically, to network devices such as routers hosting user-specific state information for the purpose of providing personalized content on the World Wide Web.
- 2. Description of Background Art
- On the World Wide Web (i.e. the “web”), it is frequently desirable for websites to store information relating to a specific user and/or user computer. For many applications it is necessary to associate a user computer with context data relating to previous interactions with that same user computer. For example, a user may indicate certain preferences regarding the display of a particular website, and it may be desirable to associate those preferences with the user computer for future visits. However, the standard protocol for transferring web pages, the HyperText Transport Protocol (HTTP), provides only a very limited capability to store user computer-specific context data across visits.
- Known methods for storing user computer-specific context data built into HTTP usually involve storing a small segment of data, called a “magic cookie” or simply “cookie,” on the user computer. Cookies form the building blocks for most user computer-specific context data storage on the web, but they have several serious limitations. Cookies are limited in size, finite in quantity, and can be arbitrarily modified or deleted by the user. They also pose privacy and security concerns, which limit their suitability for storage of many kinds of context data that would be desirable to store. For example, it may be desirable for a website to automatically store a user's personal information for the purpose of facilitating future visits from the same user, but storing the user's personal information in a cookie makes the information potentially vulnerable to disclosure or malicious modification by other programs or websites, yielding an undesirable result.
- Other techniques for storing data on the user computer include ASP.NET View State, hidden form fields, and URL query strings. However, all of these techniques are limited in the amount of data they can store, and many of them threaten the security of the user computer when used to store critical data.
- To address these concerns, many web servers use cookies (or other techniques) to store index data in the user computer. This index data is then used to retrieve the user computer-specific context data from a database of context data stored at the web server. The user computer-specific context data can be stored securely at the web server while still being uniquely associated with various user computers through use of cookies.
- While the technique of using index data contained in cookies to retrieve context data stored at the web server is an improvement over storing context data in cookies directly, it introduces several other problems when put into practice.
- Web servers are highly active systems with many processes running in parallel. It is quite common for web servers to crash, freeze, restart, or slow due to high volume of traffic. These events can make the website and any stored context data unavailable for a period of time, and, in some cases, result in the loss of context data entirely.
- To alleviate the effect of server failure, it is common for websites to be hosted on multiple web servers. Many websites receive such a high volume of page requests that without hosting them on multiple web servers the response time to page requests would be intolerable. Having multiple web servers reduces the likelihood that the website will become unavailable due to a server failure and increases the overall capability of the system to handle a high volume of page requests. Various techniques for load balancing have been implemented for evenly assigning incoming web page requests to one of an array of web servers. These techniques are designed to smooth the response to page requests despite server delays or failures.
- However, load balancing does not address the problem of potential context data loss due to server failure. If context data is stored on a web server that fails, load balancing techniques may be able to continue web service without interruption, but the context data stored on that web server may be lost. Load balancing alone does not protect context data from server loss.
- Furthermore, storing context data on web servers hinders load balancing. If the user computer-specific context data is stored on a certain web server, it is necessary that return visits by the user computer be handled by the same web server so as to facilitate retrieval of the context data. Thus the user computer remains associated with a particular web server, even though load conditions may have changed, causing another server to have greater availability of capacity. This static association between a user computer and a web server reduces the effectiveness of load balancing. Load balancing techniques have difficulty assigning page requests to web servers evenly when a large portion of incoming page requests must necessarily be assigned to a specific web server.
- Additionally, storing context data on a web server poses challenges for maintaining or upgrading the web server, as context data can persist for long periods of time, and it is not generally known when the return of a certain user computer will necessitate access to certain context data.
- Context data can be stored in a context server external to the web server. However, storing context data external to the web server introduces several extra steps. In order to process a request, the web server must receive the request, determine the need for context, request the context data from the external context server, wait for a response, process that response, write the updated context data back to the external state server, and finally return the web request. These extra steps introduce delay, complexity, and the potential for failure.
- What is needed is a method for storing and retrieving user computer-specific context data securely and for an indefinite period of time, in a manner that supports redundancy and is compatible with load-balancing techniques, and without adding unnecessary complexity or steps to the method of the web server.
- The invention is a system and method for storing context data in a network device located in the data path between the user computer and the web server, thereby allowing for the secure and ongoing storage of user computer-specific context data without adding unnecessary complexity or steps to existing web server methods, while at the same time supporting redundancy and facilitating effective load-balancing. By storing user computer-specific context data in the data path between the user computer and the web server, the invention reduces the complexity of the web server and improves handling of server failure. Furthermore, the total amount of network traffic is reduced, as the web server does not have to make an additional request, and subsequent update of context data, to an external context data server.
- In one embodiment of the present invention, the context data server is located in the data path between the user computer and the web server; thus, the system of the present invention has the opportunity to intercept messages from the user computer to the web server and from the web server to the user computer. The context data server stores context data in a context database by reading context data from messages passing between the web server and the user computer. The context data server may also insert or use index data in messages passing between the web server and the user computer to facilitate the retrieval of context data. The context data server may also remove context data or index data from messages passing between the web server and the user computer. The context data server may also add context data from the context database to messages passing between the user computer and the web server.
- According to one embodiment of the present invention, the data necessary for the storage, retrieval, and management of a context database are piggy-backed on standard network messages passing between the web server and the user computer and between the user computer and the web server.
- According to one embodiment of the present invention, the user-specific context data is stored in a router in the data path between the user and the web server. The router performs the context data storage and retrieval functions herein described in addition to the functions commonly performed by a router.
-
FIG. 1 (a) is a block diagram illustrating a combined context data server and router, connected in the data path of a typical wide area network connection, according to one embodiment of the present invention. -
FIG. 1 (b) is a block diagram illustrating a context data server connected in the data path of a typical wide area network connection, according to one embodiment of the present invention. -
FIG. 1 (c) is a block diagram illustrating a combined context data server and router, connected in the data path of a typical wide area network connection, according to one embodiment of the present invention. -
FIG. 2 is a block diagram illustrating the hardware configuration of a context data server, according to one embodiment of the present invention. -
FIG. 3 illustrates the storage and retrieval of context data at a context data server in a typical exchange with a web server, according to several embodiment of the present invention. -
FIG. 4 is a flow diagram illustrating a method for retrieving context data in a context data server, according to one embodiment of the present invention. -
FIG. 5 a is a flow diagram illustrating a method for storing context data in a context data server, according to one embodiment of the present invention. -
FIG. 5 b is a flow diagram illustrating a method for storing context data in a context data server, according to another embodiment of the present invention. -
FIG. 6 is a flow diagram illustrating a method for responding to a page request containing context data, according to one embodiment of the present invention. - Embodiments of the present invention are now described with reference to the figures where like reference numbers indicate identical or functionally similar elements.
- According to one embodiment of the present invention, the context data server is located in the data path between the user computer and the web server in the sense that the system of the present invention has the opportunity to intercept messages from the user computer to the web server and from the web server to the user computer. The context data server stores and retrieves context data in a context database by reading context data from messages passing between the web server and the user computer. The context data server may also insert or use index data in messages passing between the web server and the user computer to facilitate the retrieval of context data. The context data server may also remove context data or index data from messages passing between the web server and the user computer. By performing at least some of these functions in the data path between the web server and the user computer, the context data server reduces the need for additional context data request and update messages.
- For the purposes of illustration, the term ‘user computer’ will be employed throughout this disclosure to refer any electronic device capable of sending and receiving messages on a network. A non-exhaustive list of examples of user computers includes personal computers, enterprise computing systems, cellphones, handheld devices, personal digital assistants (PDAs), gaming consoles, and portable entertainment systems. One skilled in the art will recognize that any number of devices may be implemented to fulfill the role of the ‘user computer’ described herein without departing from the scope of the present invention.
- The context data server may use methods to associate context data with a specific user, or it may use methods to associate context data with a specific user computer. Some computer systems support multiple users on the same computer, and some users may use multiple computers. The invention is equally applicable to both user-specific context data and user computer-specific context data. For the purposes of illustration herein all such context data will be referred to as user computer-specific context data without limiting the scope of the invention.
- The invention is concerned with the storage and retrieval of context data. Context data can be any data that it is desired to have available when a user or user computer makes a future data request. For example, it may be desirable for a web server to store shopping cart information relating to a specific user, for a file server to store a history of file accesses relating to a specific user computer, or for a game server to store game-play information relating to a specific user. The invention assists a server in responding to data requests by storing and retrieving data pertaining to the user or user computer originating those requests.
- Context data may come in many forms, and the invention is applicable to all such forms. One skilled in the art will recognize that other forms of context data having other uses may be stored and/or processed according to the techniques described herein without departing from the essential characteristics of the present invention.
- For the purposes of illustration, the invention is frequently described herein as being useful in conjunction with HTTP requests, HTTP responses, and web servers. However, it will be apparent to one skilled in the art that the invention is useful in conjunction with any kind of data request, any kind of data response, any kind. of data server, and any form of index data.
- The context data server is described as a server for the purposes of illustrating one embodiment of the present invention. According to another embodiment of the present invention, the function of the context data server can be performed by any device capable of storing and retrieving a segment of data.
-
FIG. 1 (a) is a block diagram illustrating a combined context data server and router, connected in the data path of a typical wide area network connection, according to one embodiment of the present invention. Eachuser computer 102 is a device capable of making requests for data over a wide area network. For example,user computer 102 can be a personal computer executing a standard web browser program, or it can be a portable device requesting data using another protocol. In one embodiment, there are a plurality ofuser computers wide area network 103, and eachuser computer 102 may have some unique context data associated with the past actions of saiduser computer 102. - Each
user computer 102 is capable of storing index data at the request of a server connected to thewide area network 103. Once stored, this index data is sent to the server as a component of future data requests. The index data may be stored on theuser computer 102 and included in future data requests using a variety of methods. For example, according to one embodiment of the present invention, HTTP cookies may be used to store index data on theuser computer 102. According to another embodiment of the present invention, HTTP-post hidden form fields, ASP.NET View State fields, and URL query strings may be used to store index data on theuser computer 102. - One skilled in the art will recognize that the examples of methods for storing index data on the
user computer 102 are not intended to be exhaustive and that a wide variety of technologies are applicable to the present invention. - Each
user computer 102 may be connected to thewide area network 103 through at least one of several connection devices, including routers, modems, and wireless access points. These connection devices are not shown as such connection devices and methods are well known in the art. - The
wide area network 103 may be any network capable of connecting auser computer 102 with aweb server 110. In one embodiment, thewide area network 103 is the Internet. In another embodiment thewide area network 103 is a private network. Thewide area network 103 is capable of conveying messages bi-directionally between theuser computer 102 and the wide areanetwork access point 104. - The wide area
network access point 104 is the point of connection between thewide area network 103 and thelocal area network 105. The wide areanetwork access point 104 may be a digital subscriber line modem, an analog modem, a cable modem, a network card, a broadband wireless hub, or any other device for transferring data between thewide area network 103 and thelocal area network 105. - For clarity, the
context data server 106, therouter 108, and theweb server 110 are depicted as components of alocal area network 105. However, in one embodiment, therouter 108 can in fact be a great distance from theweb server 110, and can further be considered as part of a separate network. The presentation of thecontext data server 106, therouter 108, and theweb server 110 as components of thelocal area network 105 is intended to clarify the description of the invention for the purposes of enablement and is not intended to limit the forms the invention can take. - In one embodiment, the local area network interfaces with a single wide area
network access point 104 and includes at least oneweb server 110. Connected between the wide areanetwork access point 104 and theweb server 110 is at least onerouter 108. The router orrouters 108 are configured to efficiently relay data among the web servers 110 (ifmultiple web servers 110 are implemented) and between aweb server 110 and the wide areanetwork access point 104. Other network devices may also be connected to thelocal area network 105. - In
FIG. 1 (a), asingle router 108 is depicted, with acontext data server 106 adjoined. Therouter 108 is capable of receiving an incoming message and repeating it on at least one of a plurality of network ports. Therouter 108 may also modify the incoming message before repeating it, such as in the well-known method of network address translation (NAT). - The
context data server 106 may be adjoined to therouter 108 differently depending on the embodiment of the invention. In one embodiment, the context data server operates using the same physical hardware (such as processor, network ports, electronic storage) as therouter 108. In another embodiment, thecontext data server 106 shares some physical hardware (such as enclosure, power supply, and network ports) but does not share certain other physical hardware (such as processor and electronic storage). In another embodiment, thecontext data server 106 does not share any physical hardware with therouter 108, but thecontext data server 106 is connected in series to at least onerouter 108. - In an implementation with
multiple routers 108, thecontext data server 106 can be joined to any one of therouters 108 so long as the placement sets thecontext data server 106 in the data path between aweb server 110 and the wide areanetwork access point 104. According to one embodiment of the present invention, multiple context data servers are implemented, and are connected either in series or parallel in the data path between a web server and a wide area network access point. In a preferred embodiment, whenmultiple routers 108 are implemented hierarchically, thecontext data server 106 is adjoined therouter 108 with the highest position in the hierarchy of thoserouters 108 connected toweb servers 110. - The
context data server 106 is connected in such a way so that it may intercept messages originating from eachuser computer 102 and destined for theweb server 110 and messages originating from theweb server 110 and destined for eachuser computer 102. The method of thecontext data server 106 will be described in greater detail in connection withFIGS. 2-5 . - The
web server 110 is connected to therouter 108. Theweb server 110 is a device capable of receiving a request for data and transmitting data in response. For example, theweb server 110 may be an HTTP server capable of receiving page requests and returning web pages according to the HTTP. As another example, the web sever 110 may be any server capable of sending datagrams according to a protocol such as the User Datagram Protocol (UDP), or the Transmission Control Protocol (TCP). Theweb server 110 may consist of multiple devices, which in conjunction have the capabilities of aweb server 110. Although the example of a web servers has been chosen for the purposes illustration, one skilled in the art will recognize that the invention is applicable to embodiments employing any device capable of receiving and transmitting data. - The
web server 110 may be implemented using at least one of the many devices commonly available for responding to data requests. For example, theweb server 110 may be implemented using a standard Personal Computer (PC) and software such as Apache HTTP Server. Theweb server 110 could also be implemented, for example, using Microsoft® Internet Information Server, ASP.NET 2.0, ASP.NET 1.1, Classic ASP, JSP, IBM® Websphere, or Linux Apache PHP. The web server could be implemented as an online gaming server. One skilled in the art will recognize that these examples are not intended to be exhaustive and that other implementations of the web server are also applicable to the present invention. - The
web server 110 may also include methods and/or systems for interfacing with thecontext data server 106. The method used by theweb server 110, according to one embodiment of the present invention, is illustrated inFIG. 6 . -
FIG. 1 (b) is a block diagram illustrating a context data server connected in the data path of a typical wide area network connection, according to one embodiment of the present invention. Thecontext data server 106 is connected to the wide areanetwork access point 104 and theweb server 110. In one embodiment, thecontext data server 106 is not adjoined to anyrouter 108. - The
user computer 102,wide area network 103, wide areanetwork access point 104, andweb server 110 are similar to those herein described in reference to FIG. 1(a). Thecontext data server 106 is connected in such a way so that it may intercept messages originating from eachuser computer 102 and destined for theweb server 110 and messages originating from theweb server 110 and destined for eachuser computer 102. The method of thecontext data server 106 will be described in greater detail inFIGS. 2-5 . According to one embodiment of the present invention, thecontext data server 106 operates without a router and in conjunction with asingle web server 110. -
FIG. 1 (c) is a block diagram illustrating a combined context data server and router, connected in the data path of a typical wide area network connection, according to one embodiment of the present invention. Theuser computer 102,wide area network 103, wide areanetwork access point 104,context data server 106,router 108, andweb server 110 are similar to those herein described in reference toFIG. 1 (a). - According to one embodiment of the present invention, the
load balancer 107 is connected to the wide areanetwork access point 104 and to therouter 108. Theload balancer 107 is capable of receiving an incoming page request and redirecting it to aweb server 110 on the basis of the current availability of thevarious web servers 110. For example, ifweb server 110A is overloaded due to a high volume of page requests, butweb server 110B has available request-handling capability, theload balancer 107 directs incoming page requests toweb server 110B. Theload balancer 107 may be implemented using any one of many commonly available load balancing methods. Such methods can include random allocation, round-robin allocation, weighted round-robin, least connections, and IP hash among others. - In
FIG. 1 (c), asingle router 108 is depicted, with acontext data server 106 adjoined. As described herein with reference toFIG. 1 (a), thecontext data server 106 may be adjoined to therouter 108 differently depending on the embodiment of the invention. According to one embodiment of the present invention, thecontext data server 106 does not share any physical hardware with therouter 108. Theload balancer 107,router 108, andcontext data server 106 are connected in series, and may be connected in any order, according to one embodiment of the present invention. For example, theload balancer 107 may be connected between the wide areanetwork access point 104 and thecontext data server 106, or theload balancer 107 may be connected between thecontext data server 106 and theweb server 110. Other methods for connecting the wide areanetwork access point 104,load balancer 107,router 108, and thecontext data server 106 will be apparent to one of skill in the art without departing from the scope of the present invention. According to one embodiment of the present invention, thecontext data server 106 may operate in conjunction with a load balancing device, such as theload balancer 107. According to another embodiment of the present invention, theload balancer 107 is adjoined to thecontext data server 106. Theload balancer 107 and thecontext data server 106 may share all, some, or no physical hardware, according to various embodiments of the present invention. -
FIG. 2 is a block diagram illustrating the hardware configuration of one embodiment of thecontext data server 106, according to one embodiment of the present invention. As explained previously, some or all of the hardware of thecontext data server 106 may be shared with therouter 108.FIG. 2 illustrates the hardware of thecontext data server 106 as if said hardware were dedicated, but in fact, some or all of this hardware can be shared with other devices. - The
network port 202 is a standard device capable of sending and receiving messages over a network. Thenetwork port 208 is also a standard device capable of sending and receiving messages over a network. As a pair, thenetwork port 202 and thenetwork port 208 allow thecontext data server 106 to be in the data path between the wide areanetwork access point 104 and theweb server 110. Network messages not requiring the retrieval or storage of context data can be passed from one network device to the other without change, so that the normal operation of the network is not affected. On the other hand, network messages requiring either the retrieval or storage of context data can be read and/or modified as necessary before continuing on the data path to their destination. - The
processor 206 is a standard processor capable of executing instructions. Any standard microcomputer processor could be used to implement theprocessor 206, for example, the x86 family of 32- and 64-bit processors. - The
storage device 204 includes at least one of the many common components available for electronic storage. Thestorage device 204 stores incoming and outbound network messages and instructions for theprocessor 206. Thestorage device 204 also includes thecontext database 210. Thecontext database 210 may be a standard database capable of storing and retrieving data on the basis of some index data. - The
storage device 204 also includes acontext data retriever 214 and acontext data updater 216. The method used by thecontext data retriever 214, according to one embodiment of the present invention, is illustrated in greater detail in connection withFIG. 4 . The method used by thecontext data updater 216, according to one embodiment of the present invention, is illustrated in greater detail in connection withFIG. 5 . -
FIG. 3 is an event trace illustrating the storage and retrieval of context data at a context data server in a typical exchange between auser computer 102 and aweb server 110, according to one embodiment of the present invention. For the purpose of illustration,FIG. 3 depicts an example in which theweb server 110 is a web server and the data is requested by the user according to the HTTP. However, as explained previously, in various embodiments the invention is capable of storing and retrieving context data in conjunction with various types of servers, various types of data requests, and in conjunction with data requests according to various protocols. -
FIG. 3 depicts the reception and transmission of messages at thecontext data server 106. For the purposes of simplicity, these receptions and transmissions are illustrated without the interveningwide area network 103, widearea network point 104, and router orrouters 108. Various configurations of network routers and links are implicit in the arrows depicting message reception and transmission among theuser computer 102,context data server 106, andweb server 110. -
FIG. 3 (a) depicts an HTTP exchange between theuser computer 102 and theweb server 110 not requiring the retrieval or storage of context data. Theuser computer 102 sends apage request 302 to thecontext data server 106. Because thepage request 302 does not contain index data, it is not necessary to retrieve any context data, so thecontext data server 106 forwards the message on to theweb server 110 as thepage request 304. - The
web server 110 receives thepage request 304 and retrieves the appropriate web page. The method for responding to a page request in theweb server 110 is described in greater detail herein with reference toFIG. 6 . Theweb server 110 generates a page return, includes in the page return some index data, and transmits the resulting page return withindex data 306. - The
context data server 106 receives the page return withindex data 306. Because the page return withindex data 306 does not contain context data, it is not necessary to store any context data, so thecontext data server 106 forwards the message on to theuser computer 102 as the page return withindex data 308. - The
user computer 102 receives the page return withindex data 308. Theuser computer 102 displays or saves the page and stores the index data locally. Various methods for storing index data locally are available; a non-exhaustive set of examples has been given herein with reference toFIG. 1 . -
FIG. 3 (b) depicts an HTTP exchange between theuser computer 102 and theweb server 110 for which it is desired to store context data. Theuser computer 102 sends apage request 310 to thecontext data server 106. Because thepage request 310 does not contain index data, it is not necessary to retrieve any context data, so thecontext data server 106 forwards the message on to theweb server 110 as thepage request 312. - The
web server 110 receives thepage request 312 and retrieves the appropriate web page. Theweb server 110 generates a page return. In this case, however, the processing of thepage request 312 generates some context data requiring storage. Theweb server 110 generates a page return, includes in the page return index data, inserts the context data, and transmits the resulting page return with index data andcontext data 314. - The
context data server 106 receives the page return with index data andcontext data 314. In this example the page return with index data andcontext data 314 does contain context data, so thecontext data server 106 stores the context data in the context database. The method for storing context data in thecontext data server 106 is described in greater detail herein with reference toFIG. 5 . According to one embodiment of the present invention, thecontext data server 106 removes the context data from the message and forwards the resulting page return withindex data 316 to theuser computer 102. - The
user computer 102 receives the page return withindex data 316. Theuser computer 102 displays or saves the page and stores the index data locally. Various methods for storing index data locally are available; a non-exhaustive set of examples has been given herein with reference toFIG. 1 . -
FIG. 3 (c) depicts an HTTP exchange between theuser computer 102 and theweb server 110 requiring the retrieval and updating of context data. Theuser computer 102 sends a page request withindex data 318 to thecontext data server 106. The page request withindex data 318 contains index data, so thecontext data server 106 searches the context database for associated context data. The method for retrieving context data in thecontext data server 106 is described in greater detail herein with reference toFIG. 4 . - If the
context data server 106 finds context data associated with the index data, thecontext data server 106 inserts that context data into the message, and forwards the resulting page request with index data andcontext data 320 to theweb server 110. - The
web server 110 receives the page request with index data andcontext data 320 and retrieves the appropriate web page. Theweb server 110 may customize or retrieve differently the web page depending on the context data. - The
web server 110 generates a page return. In this case, however, the processing of the page request with index data andcontext data 320 generates some new or updated context data requiring storage. Theweb server 110 generates a page return, includes in the page return either the same or different index data, inserts the new or updated context data, and transmits the resulting page return with index data andcontext data 322. - The
context data server 106 receives the page return with index data andcontext data 322. In the case that the page return with index data andcontext data 322 contains new or updated context data, thecontext data server 106 stores or updates the context data in the context database appropriately. According to one embodiment of the present invention, thecontext data server 106 removes the context data from the message and forwards the resulting page return withindex data 324 to theuser computer 102. - The
user computer 102 receives the page return withindex data 324. Theuser computer 102 displays or saves the page as indicated by the user and stores the index data in a local cache. Various methods for storing index data locally are available; a non-exhaustive set of examples has been given herein with reference toFIG. 1 . - As shown, by installing the
context data server 106 in the data path between theuser computer 102 and theweb server 110, context data is securely stored and retrieved without additional complication or steps on the part of either theuser computer 102 or theweb server 110. -
FIG. 3 (d) depicts an HTTP exchange between theweb server 110A and theweb server 110B requiring the retrieval and updating of context data. Inserting a context data server in the data path between a first web server and a second web server may be useful, for example, in a confidential transaction in which the first web server processes a confidential portion of the transaction and the second web server processes a non-confidential portion of the transaction. Theweb server 110A sends a page request with index data andcontext data 325 to thecontext data server 106. Theweb server 110A may send a page request with index data andcontext data 325, for example, in response to a page request from a user computer not shown. In the case that the page return with index data andcontext data 325 contains new or updated context data, thecontext data server 106 stores or updates the context data in the context database appropriately. According to one embodiment of the present invention, thecontext data server 106 removes the context data from the message and forwards the resulting page request withindex data 326 to theweb server 110B. - The
web server 110B receives the page request withindex data 326 and retrieves the appropriate web page. Theweb server 110B generates a page return, includes in the page return either the same or different index data and transmits the resulting page return withindex data 328. - The page return with
index data 328 contains index data, so thecontext data server 106 searches the context database for associated context data. A method for retrieving context data in thecontext data server 106 is described in greater detail herein with reference toFIG. 4 . - If the
context data server 106 finds context data associated with the index data, thecontext data server 106 inserts that context data into the message, and forwards the resulting page return with index data andcontext data 330 to theweb server 110A. - The
web server 110A receives the page return with index data andcontext data 330 and handles the page return appropriately. Theweb server 110A may customize or handle differently the web page depending on the context data. Theweb server 110A may forward the page return, either with or without context data, on to a user computer not shown. -
FIG. 4 illustrates a method for retrieving context data in a context data server, according to one embodiment of the present invention. In one embodiment, the method is performed by thecontext data retriever 214. Anetwork message 402 has been received by thecontext data server 106. In the example illustrated, thenetwork message 402 includes somelimited context data 406 that has been previously stored in thecontext database 407 as associated with someverbose context data 410. According to one embodiment of the present invention, thelimited context data 406 is analogous to the index data described herein with reference toFIG. 3 . Thelimited context data 406 may be any data from which it is possible to retrieve verbose context data. Thelimited context data 406 may be contained in thenetwork message 402 in any number of manners. For example thelimited context data 406 could be contained in a cookie field, a hidden form field, a View State field, or somewhere else in thenetwork message 402.Limited context data 406 could be contained in the header of thenetwork message 402, for example, in the case in which theuser computer 102 transmits thelimited context data 406 in the form of a URL query string. - The
context data retriever 214 retrieves 404 thelimited context data 406 from thenetwork message 402. Thecontext data retriever 214searches 408 thecontext database 407 forverbose context data 410 retrievable by thelimited context data 406. - According to one embodiment of the present invention, the
network message 402 can be an HTTP page request and thelimited context data 406 can be stored in a cookie. For example, thecontext data retriever 214 would retrieve 404 thelimited context data 406 by reading the cookie in thenetwork message 402, where thenetwork message 402 is an HTTP page request containing a cookie. - The
context data retriever 214 optionally removes 412 the limited context data from thenetwork message 402 to produce a groomednetwork message 414. In some embodiments it is not necessary to remove 412 the limited context data, while in other embodiments this procedure is desirable. If this optional procedure is not implemented, the groomednetwork message 414 is equivalent to thenetwork message 402. - The
context data retriever 214inserts 416 theverbose context data 410 into the groomednetwork message 414 to produce a translatednetwork message 418. The translatednetwork message 418 is ready to be sent to theweb server 110, as illustrated inFIG. 3 . The translatednetwork message 418 is of a form such that the request contained therein may be processed by theweb server 110 without further need for external context data retrieval. -
FIG. 5 a illustrates a method for storing context data in a context data server, according to one embodiment of the present invention. In one embodiment, the method is performed by thecontext data updater 216. Anetwork message 502 has been received by thecontext data server 106. In this example, thenetwork message 502 comprises someverbose context data 514. - Additionally, according to one embodiment of the present invention, the
network message 502 includes some limited context data. The context data updater 216 retrieves 504limited context data 506 from thenetwork message 502. According to one embodiment of the present invention, thelimited context data 506 may be analogous to the index data described herein with reference toFIG. 3 . Thelimited context data 506 may be any data with which it is possible to associate verbose context data in the context database. - The
limited context data 506 may be contained in thenetwork message 502 in any number of manners. For example thelimited context data 406 could be contained in a cookie field, a hidden form field, in the header of the network message, or somewhere else in thenetwork message 502. - According to one embodiment of the present invention, the
network message 502 can be an HTTP page response and thelimited context data 506 can be contained in a cookie. For example, the context data updater 216 would retrieve 504 thelimited context data 506 by reading the cookie from thenetwork message 502, where thenetwork message 502 is an HTTP page response containing a cookie. - The context data updater 216 retrieves 512
verbose context data 514 from thenetwork message 502. - The context data updater 216
updates 508 thecontext database 507 with theverbose context data 514 using thelimited context data 506 as an index. If some other verbose context data is already indexed by thelimited context data 506 in thecontext database 507, the context data updater 216 may append or overwrite the other verbose context data with theverbose context data 514. - The context data updater 216 optionally removes 516 the verbose context data from the
network message 502 to produce a translatednetwork message 518. In some embodiments it is not necessary to remove 516 the verbose context data, while in other embodiments this procedure is desirable. If this optional step is not implemented, the translatednetwork message 518 is equivalent to thenetwork message 502. - The translated
network message 518 is ready to be sent to theuser computer 102, as illustrated inFIG. 3 . The translatednetwork message 518 is of a form such that the request contained therein may be interpreted by theuser computer 102 as a standard message, and thecontext database 507 has been updated to reflect changes or additions of verbose context data. -
FIG. 5 b illustrates a method for storing context data in a context data server, according to another embodiment of the present invention. In one embodiment, the method is performed by thecontext data updater 216. Anetwork message 502 has been received by thecontext data server 106. In this example, thenetwork message 502 comprises someverbose context data 514. - According to another embodiment of the present invention, the
context data updater 216 generates 505limited context data 506. According to one embodiment of the present invention, thelimited context data 506 may be analogous to the index data described herein with reference toFIG. 3 . Thelimited context data 506 may be any data with which it is possible to associate verbose context data in the context database. - According to one embodiment of the present invention, the context data updater retrieves 512
verbose context data 514, and updates 508 thecontext database 507 as described herein with reference toFIG. 5 a. - The context data updater 216 optionally removes 516 the verbose context data from the
network message 502 to produce a groomednetwork message 515. If this optional step is not implemented, the groomednetwork message 515 is equivalent to thenetwork message 502. - The context data updater 216
inserts 517 thelimited context data 506 into the groomednetwork message 515 to produce a translatednetwork message 518. Thelimited context data 506 may be inserted 517 into thenetwork message 502 in any number of manners. For example thelimited context data 406 may be stored in a cookie field, a hidden form field, in the header of the translatednetwork message 518, or somewhere else in the translatednetwork message 518. - The translated
network message 518 is ready to be sent to theuser computer 102, as illustrated inFIG. 3 . The translatednetwork message 518 is of a form such that the request contained therein may be interpreted by theuser computer 102 as a standard message, and thecontext database 507 has been updated to reflect changes or additions of verbose context data. -
FIG. 6 is a flow diagram illustrating a method for responding to a page request containing context data, according to one embodiment of the present invention. In one embodiment, the method is performed by theweb server 110. WhileFIG. 6 illustrates an example of handling an HTTP request containing context data in a web server, it teaches a method for handling any type of data request in any type of data server. The example of HTTP has been chosen for the purpose of illustration, but does not limit the scope of the invention. - A
network message 602 has been received by theweb server 110 as illustrated inFIG. 3 . Thenetwork message 602 corresponds to the translatednetwork message 418 prepared by the method illustrated inFIG. 4 . As such, thenetwork message 602 containsverbose context data 606. Theweb server 110 retrieves 604 theverbose context data 604 from thenetwork message 602. - The
web server 110 optionally removes 610 the verbose context data to produce a network message equivalent to thenetwork message 402, i.e. equivalent to the network message as originally received by the method for context data retrieval as illustrated inFIG. 4 . In the example shown inFIG. 6 , this network message is astandard HTTP request 612. If theverbose context data 610 is stored in thenetwork message 602 in such a way as to not interfere with the normal processing of an HTTP request, thenetwork message 602 is already in the form of astandard HTTP request 612, and it may not be desired to remove 610 the verbose context data. - The
web server 110 passes theverbose context data 606 and thestandard HTTP request 612 to aweb service application 608. Theweb service application 608 handles thestandard HTTP request 606 using any of the well known methods in the art, referring to theverbose context data 606 as necessary. Theweb service application 608 returns astandard HTTP response 614 and, in some instances, updatedverbose context data 616. If the updatedverbose context data 616 is present, theweb server 110inserts 618 the updatedverbose context data 616 into thestandard HTTP response 614. - The
web server 110 optionally inserts 620 limited context data into the resulting message as necessary to produce aresponsive network message 622. Examples of methods in which limited context data may be stored in a network message are given herein with reference toFIGS. 4-5 . According to one embodiment of the present invention, limited context data is inserted by theweb server 110. According to another embodiment of the present invention, limited context data is inserted by thecontext data updater 216. - The
responsive network message 622 is ready to be transmitted to thecontext data server 106 as illustrated inFIG. 3 . Theresponsive network message 622 is of the form so that it may be processed by thecontext data server 106 as illustrated inFIG. 5 . - According to one embodiment of the present invention, multiple copies of the context database are maintained for the purposes of backing up context data in the event of failure of the context data server. Any of the well-known methods for providing redundant data services are applicable to the invention in the interest of failure prevention or response.
- Reference in the specification to “one embodiment” or to “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
- Some portions of the above are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps (instructions) leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic or optical signals capable of being stored, transferred, combined, compared and otherwise manipulated. It is convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. Furthermore, it is also convenient at times, to refer to certain arrangements of steps requiring physical manipulations of physical quantities as modules or code devices, without loss of generality.
- It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or “determining” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system memories or registers or other such information storage, transmission or display devices.
- Certain aspects of the present invention include process steps and instructions described herein in the form of an algorithm. It should be noted that the process steps and instructions of the present invention can be embodied in software, firmware or hardware, and when embodied in software, can be downloaded to reside on and be operated from different platforms used by a variety of operating systems.
- The present invention also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus. Furthermore, the computers referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
- The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may also be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the present invention as described herein, and any references below to specific languages are provided for disclosure of enablement and best mode of the present invention.
- Finally, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.
- While the invention has been particularly shown and described with reference to a preferred embodiment and several alternate embodiments, it will be understood by persons skilled in the relevant art that various changes in form and details can be made therein without departing from the spirit and scope of the invention.
Claims (88)
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/359,637 US7937435B2 (en) | 2006-02-21 | 2006-02-21 | Identifying, storing, and retrieving context data for a network message |
US11/623,028 US8166114B2 (en) | 2006-02-21 | 2007-01-12 | Asynchronous context data messaging |
CA2640696A CA2640696C (en) | 2006-02-21 | 2007-02-15 | Storing and retrieving user context data |
EP07750862.0A EP1987439A4 (en) | 2006-02-21 | 2007-02-15 | Storing and retrieving user context data |
PCT/US2007/004055 WO2007098014A2 (en) | 2006-02-21 | 2007-02-15 | Storing and retrieving user context data |
US12/023,964 US8037127B2 (en) | 2006-02-21 | 2008-01-31 | In-line network device for storing application-layer data, processing instructions, and/or rule sets |
US13/226,394 US8612585B2 (en) | 2006-02-21 | 2011-09-06 | In-line network device for storing application-layer data, processing instructions, and/or rule sets |
US13/361,870 US8510400B2 (en) | 2006-02-21 | 2012-01-30 | Asynchronous context data messaging |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/359,637 US7937435B2 (en) | 2006-02-21 | 2006-02-21 | Identifying, storing, and retrieving context data for a network message |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/623,028 Continuation-In-Part US8166114B2 (en) | 2006-02-21 | 2007-01-12 | Asynchronous context data messaging |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/623,028 Continuation-In-Part US8166114B2 (en) | 2006-02-21 | 2007-01-12 | Asynchronous context data messaging |
US12/023,964 Continuation-In-Part US8037127B2 (en) | 2006-02-21 | 2008-01-31 | In-line network device for storing application-layer data, processing instructions, and/or rule sets |
Publications (2)
Publication Number | Publication Date |
---|---|
US20070204031A1 true US20070204031A1 (en) | 2007-08-30 |
US7937435B2 US7937435B2 (en) | 2011-05-03 |
Family
ID=38437882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/359,637 Active 2029-10-26 US7937435B2 (en) | 2006-02-21 | 2006-02-21 | Identifying, storing, and retrieving context data for a network message |
Country Status (4)
Country | Link |
---|---|
US (1) | US7937435B2 (en) |
EP (1) | EP1987439A4 (en) |
CA (1) | CA2640696C (en) |
WO (1) | WO2007098014A2 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080127198A1 (en) * | 2006-11-27 | 2008-05-29 | Cisco Technology, Inc. | Fine granularity exchange level load balancing in a multiprocessor storage area network |
US20080126693A1 (en) * | 2006-11-27 | 2008-05-29 | Cisco Technology, Inc. | Virtualization support in a multiprocessor storage area network |
US7844784B2 (en) | 2006-11-27 | 2010-11-30 | Cisco Technology, Inc. | Lock manager rotation in a multiprocessor storage area network |
WO2016118128A1 (en) * | 2015-01-22 | 2016-07-28 | Hewlett Packard Enterprise Development Lp | Router to send a request from a first subnet to a second subnet |
CN109005224A (en) * | 2018-07-26 | 2018-12-14 | 中国建设银行股份有限公司 | Data distributing method and device |
US10263970B1 (en) * | 2018-10-07 | 2019-04-16 | Capital One Services, Llc | System, method and architecture for secure sharing of customer intelligence |
CN110602154A (en) * | 2018-06-13 | 2019-12-20 | 网宿科技股份有限公司 | WEB server and method for processing data message thereof |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NZ566291A (en) | 2008-02-27 | 2008-12-24 | Actionthis Ltd | Methods and devices for post processing rendered web pages and handling requests of post processed web pages |
US9389966B2 (en) * | 2012-12-12 | 2016-07-12 | 1E Limited | Backing-up user data |
Citations (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5784562A (en) * | 1995-10-10 | 1998-07-21 | U S West Advanced Technologies, Inc. | System for using a dialog session context to process electronic forms data on the world wide web |
US6038601A (en) * | 1997-07-21 | 2000-03-14 | Tibco, Inc. | Method and apparatus for storing and delivering documents on the internet |
US6370687B1 (en) * | 1999-01-21 | 2002-04-09 | Fujitsu Limited | Network computer system and substitute compile server |
US6385641B1 (en) * | 1998-06-05 | 2002-05-07 | The Regents Of The University Of California | Adaptive prefetching for computer network and web browsing with a graphic user interface |
US20030004937A1 (en) * | 2001-05-15 | 2003-01-02 | Jukka-Pekka Salmenkaita | Method and business process to maintain privacy in distributed recommendation systems |
US6604143B1 (en) * | 1998-06-19 | 2003-08-05 | Sun Microsystems, Inc. | Scalable proxy servers with plug-in filters |
US6618751B1 (en) * | 1999-08-20 | 2003-09-09 | International Business Machines Corporation | Systems and methods for publishing data with expiration times |
US20030204769A1 (en) * | 2002-04-30 | 2003-10-30 | Coughlin Chesley B. | Session error recovery |
US20030225897A1 (en) * | 2002-05-30 | 2003-12-04 | Krawetz Neal A. | System and method for managing information requests |
US20040043758A1 (en) * | 2002-08-29 | 2004-03-04 | Nokia Corporation | System and method for providing context sensitive recommendations to digital services |
US20040117438A1 (en) * | 2000-11-02 | 2004-06-17 | John Considine | Switching system |
US20040205165A1 (en) * | 2003-01-21 | 2004-10-14 | Eplication Networks Ltd. | Method for improving quality of service from an Internet server employing heuristic optimization of downloading |
US20040268357A1 (en) * | 2003-06-30 | 2004-12-30 | Joy Joseph M. | Network load balancing with session information |
US6839741B1 (en) * | 1998-09-29 | 2005-01-04 | Mci, Inc. | Facility for distributing and providing access to electronic mail message attachments |
US20050033855A1 (en) * | 2003-08-05 | 2005-02-10 | Ahmad Moradi | Method and apparatus for generating and marketing video e-mail and an intelligent video streaming server |
US20050108335A1 (en) * | 2003-11-13 | 2005-05-19 | International Business Machines Corporation | Selective transmission of an email attachment |
US20050138033A1 (en) * | 2003-12-19 | 2005-06-23 | Nokia Corporation | Methods, applications and systems for deriving content from network resources |
US20050210243A1 (en) * | 2001-09-28 | 2005-09-22 | Archard Paul L | System and method for improving client response times using an integrated security and packet optimization framework |
US20060015512A1 (en) * | 2004-06-04 | 2006-01-19 | Optier Ltd. | System and method for performance management in a multi-tier computing environment |
US20060095527A1 (en) * | 2000-11-30 | 2006-05-04 | Malik Dale W | Method and apparatus for minimzing storage of common attachment files in an e-mail communications server |
US20060143290A1 (en) * | 2004-12-28 | 2006-06-29 | Jan Dostert | Session monitoring using shared memory |
US20060212149A1 (en) * | 2004-08-13 | 2006-09-21 | Hicken Wendell T | Distributed system and method for intelligent data analysis |
US20060225065A1 (en) * | 2005-04-01 | 2006-10-05 | Microsoft Corporation | Using a data protection server to backup and restore data on virtual servers |
US20060224723A1 (en) * | 2005-03-30 | 2006-10-05 | Inventec Corporation | Data updating system and method |
US7139780B2 (en) * | 2002-10-04 | 2006-11-21 | Hong Fu Jin Precision Industry (Shenzhen) Co., Ltd. | System and method for synchronizing files in multiple nodes |
US20070005603A1 (en) * | 2005-06-29 | 2007-01-04 | Namit Jain | Sharing state information among a plurality of file operation servers |
US7194522B1 (en) * | 2000-07-19 | 2007-03-20 | Akamai Technologies, Inc. | Content delivery and global traffic management network system |
US20070174644A1 (en) * | 2006-01-04 | 2007-07-26 | Tendril Networks, Inc. | Apparatus and Method for Dynamic Tokenization of Wireless Network Datagrams |
US20070180035A1 (en) * | 2006-01-28 | 2007-08-02 | Lucent Technologies Inc. | E-mail attachment selectable download |
US7266595B1 (en) * | 2000-05-20 | 2007-09-04 | Ciena Corporation | Accessing network device data through user profiles |
US20070268865A1 (en) * | 2006-03-02 | 2007-11-22 | Garcia Francisco J | Communications system, mobile node apparatus, and method of performing a handover |
US20070291741A1 (en) * | 2004-08-05 | 2007-12-20 | Mobilians Co.Ltd | Payment System and Its Method for Supporting User Verification in Voip Configuration |
US20080008109A1 (en) * | 2004-09-21 | 2008-01-10 | Jeffrey Ollis | Method and apparatus for bridging wireless control networks |
US20080016240A1 (en) * | 2006-07-14 | 2008-01-17 | Nokia Corporation | Method for obtaining information objects in a communication system |
US7392294B2 (en) * | 2004-07-22 | 2008-06-24 | International Business Machines Corporation | Decreasing data transmission volume from server to client device in data processing network |
US7469280B2 (en) * | 2002-11-04 | 2008-12-23 | Sun Microsystems, Inc. | Computer implemented system and method for predictive management of electronic messages |
US20090132658A1 (en) * | 2006-06-07 | 2009-05-21 | Danger, Inc. | Apparatus and method for filtering electronic messages |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI111879B (en) | 2000-05-08 | 2003-09-30 | Sonera Oyj | Management of user profile information in a telecommunications network |
US20020078076A1 (en) * | 2000-12-15 | 2002-06-20 | Evans David J. | Simulator disposed between a server and a client system |
US20040049673A1 (en) * | 2002-09-05 | 2004-03-11 | Docomo Communications Laboratories Usa, Inc. | Apparatus and method for a personal cookie repository service for cookie management among multiple devices |
US7606929B2 (en) * | 2003-06-30 | 2009-10-20 | Microsoft Corporation | Network load balancing with connection manipulation |
US7590704B2 (en) * | 2004-01-20 | 2009-09-15 | Microsoft Corporation | Systems and methods for processing dynamic content |
NZ566291A (en) | 2008-02-27 | 2008-12-24 | Actionthis Ltd | Methods and devices for post processing rendered web pages and handling requests of post processed web pages |
-
2006
- 2006-02-21 US US11/359,637 patent/US7937435B2/en active Active
-
2007
- 2007-02-15 WO PCT/US2007/004055 patent/WO2007098014A2/en active Application Filing
- 2007-02-15 EP EP07750862.0A patent/EP1987439A4/en not_active Withdrawn
- 2007-02-15 CA CA2640696A patent/CA2640696C/en active Active
Patent Citations (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5784562A (en) * | 1995-10-10 | 1998-07-21 | U S West Advanced Technologies, Inc. | System for using a dialog session context to process electronic forms data on the world wide web |
US6038601A (en) * | 1997-07-21 | 2000-03-14 | Tibco, Inc. | Method and apparatus for storing and delivering documents on the internet |
US6385641B1 (en) * | 1998-06-05 | 2002-05-07 | The Regents Of The University Of California | Adaptive prefetching for computer network and web browsing with a graphic user interface |
US6604143B1 (en) * | 1998-06-19 | 2003-08-05 | Sun Microsystems, Inc. | Scalable proxy servers with plug-in filters |
US6839741B1 (en) * | 1998-09-29 | 2005-01-04 | Mci, Inc. | Facility for distributing and providing access to electronic mail message attachments |
US6370687B1 (en) * | 1999-01-21 | 2002-04-09 | Fujitsu Limited | Network computer system and substitute compile server |
US6618751B1 (en) * | 1999-08-20 | 2003-09-09 | International Business Machines Corporation | Systems and methods for publishing data with expiration times |
US7266595B1 (en) * | 2000-05-20 | 2007-09-04 | Ciena Corporation | Accessing network device data through user profiles |
US7194522B1 (en) * | 2000-07-19 | 2007-03-20 | Akamai Technologies, Inc. | Content delivery and global traffic management network system |
US20040117438A1 (en) * | 2000-11-02 | 2004-06-17 | John Considine | Switching system |
US20060095527A1 (en) * | 2000-11-30 | 2006-05-04 | Malik Dale W | Method and apparatus for minimzing storage of common attachment files in an e-mail communications server |
US20030004937A1 (en) * | 2001-05-15 | 2003-01-02 | Jukka-Pekka Salmenkaita | Method and business process to maintain privacy in distributed recommendation systems |
US20050210243A1 (en) * | 2001-09-28 | 2005-09-22 | Archard Paul L | System and method for improving client response times using an integrated security and packet optimization framework |
US20030204769A1 (en) * | 2002-04-30 | 2003-10-30 | Coughlin Chesley B. | Session error recovery |
US20030225897A1 (en) * | 2002-05-30 | 2003-12-04 | Krawetz Neal A. | System and method for managing information requests |
US20040043758A1 (en) * | 2002-08-29 | 2004-03-04 | Nokia Corporation | System and method for providing context sensitive recommendations to digital services |
US7139780B2 (en) * | 2002-10-04 | 2006-11-21 | Hong Fu Jin Precision Industry (Shenzhen) Co., Ltd. | System and method for synchronizing files in multiple nodes |
US7469280B2 (en) * | 2002-11-04 | 2008-12-23 | Sun Microsystems, Inc. | Computer implemented system and method for predictive management of electronic messages |
US20040205165A1 (en) * | 2003-01-21 | 2004-10-14 | Eplication Networks Ltd. | Method for improving quality of service from an Internet server employing heuristic optimization of downloading |
US20040268357A1 (en) * | 2003-06-30 | 2004-12-30 | Joy Joseph M. | Network load balancing with session information |
US20050033855A1 (en) * | 2003-08-05 | 2005-02-10 | Ahmad Moradi | Method and apparatus for generating and marketing video e-mail and an intelligent video streaming server |
US20050108335A1 (en) * | 2003-11-13 | 2005-05-19 | International Business Machines Corporation | Selective transmission of an email attachment |
US20050138033A1 (en) * | 2003-12-19 | 2005-06-23 | Nokia Corporation | Methods, applications and systems for deriving content from network resources |
US20060015512A1 (en) * | 2004-06-04 | 2006-01-19 | Optier Ltd. | System and method for performance management in a multi-tier computing environment |
US7392294B2 (en) * | 2004-07-22 | 2008-06-24 | International Business Machines Corporation | Decreasing data transmission volume from server to client device in data processing network |
US20070291741A1 (en) * | 2004-08-05 | 2007-12-20 | Mobilians Co.Ltd | Payment System and Its Method for Supporting User Verification in Voip Configuration |
US20060212149A1 (en) * | 2004-08-13 | 2006-09-21 | Hicken Wendell T | Distributed system and method for intelligent data analysis |
US20080008109A1 (en) * | 2004-09-21 | 2008-01-10 | Jeffrey Ollis | Method and apparatus for bridging wireless control networks |
US20060143290A1 (en) * | 2004-12-28 | 2006-06-29 | Jan Dostert | Session monitoring using shared memory |
US20060224723A1 (en) * | 2005-03-30 | 2006-10-05 | Inventec Corporation | Data updating system and method |
US20060225065A1 (en) * | 2005-04-01 | 2006-10-05 | Microsoft Corporation | Using a data protection server to backup and restore data on virtual servers |
US20070005603A1 (en) * | 2005-06-29 | 2007-01-04 | Namit Jain | Sharing state information among a plurality of file operation servers |
US20070174644A1 (en) * | 2006-01-04 | 2007-07-26 | Tendril Networks, Inc. | Apparatus and Method for Dynamic Tokenization of Wireless Network Datagrams |
US20070180035A1 (en) * | 2006-01-28 | 2007-08-02 | Lucent Technologies Inc. | E-mail attachment selectable download |
US20070268865A1 (en) * | 2006-03-02 | 2007-11-22 | Garcia Francisco J | Communications system, mobile node apparatus, and method of performing a handover |
US20090132658A1 (en) * | 2006-06-07 | 2009-05-21 | Danger, Inc. | Apparatus and method for filtering electronic messages |
US20080016240A1 (en) * | 2006-07-14 | 2008-01-17 | Nokia Corporation | Method for obtaining information objects in a communication system |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080127198A1 (en) * | 2006-11-27 | 2008-05-29 | Cisco Technology, Inc. | Fine granularity exchange level load balancing in a multiprocessor storage area network |
US20080126693A1 (en) * | 2006-11-27 | 2008-05-29 | Cisco Technology, Inc. | Virtualization support in a multiprocessor storage area network |
US7844784B2 (en) | 2006-11-27 | 2010-11-30 | Cisco Technology, Inc. | Lock manager rotation in a multiprocessor storage area network |
US7882283B2 (en) * | 2006-11-27 | 2011-02-01 | Cisco Technology, Inc. | Virtualization support in a multiprocessor storage area network |
US8677014B2 (en) | 2006-11-27 | 2014-03-18 | Cisco Technology, Inc. | Fine granularity exchange level load balancing in a multiprocessor storage area network |
WO2008067370A3 (en) * | 2006-11-28 | 2008-11-27 | Cisco Tech Inc | Virtualization support in a multiprocessor storage area network |
WO2016118128A1 (en) * | 2015-01-22 | 2016-07-28 | Hewlett Packard Enterprise Development Lp | Router to send a request from a first subnet to a second subnet |
US10419339B2 (en) | 2015-01-22 | 2019-09-17 | Hewlett Packard Enterprise Development Lp | Router to send a request from a first subnet to a second subnet |
CN110602154A (en) * | 2018-06-13 | 2019-12-20 | 网宿科技股份有限公司 | WEB server and method for processing data message thereof |
CN109005224A (en) * | 2018-07-26 | 2018-12-14 | 中国建设银行股份有限公司 | Data distributing method and device |
US10263970B1 (en) * | 2018-10-07 | 2019-04-16 | Capital One Services, Llc | System, method and architecture for secure sharing of customer intelligence |
US11522844B2 (en) | 2018-10-07 | 2022-12-06 | Capital One Services, Llc | System, method and architecture for secure sharing of customer intelligence |
Also Published As
Publication number | Publication date |
---|---|
WO2007098014A2 (en) | 2007-08-30 |
EP1987439A2 (en) | 2008-11-05 |
EP1987439A4 (en) | 2016-07-27 |
US7937435B2 (en) | 2011-05-03 |
WO2007098014A3 (en) | 2008-12-04 |
CA2640696C (en) | 2013-07-30 |
CA2640696A1 (en) | 2007-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8612585B2 (en) | In-line network device for storing application-layer data, processing instructions, and/or rule sets | |
US7937435B2 (en) | Identifying, storing, and retrieving context data for a network message | |
US20090254707A1 (en) | Partial Content Caching | |
JP6643490B2 (en) | Session-based matching of variable browser identifiers | |
CA2773318C (en) | Cache server with extensible programming framework | |
US7904345B2 (en) | Providing website hosting overage protection by transference to an overflow server | |
US7039699B1 (en) | Tracking usage behavior in computer systems | |
US8166114B2 (en) | Asynchronous context data messaging | |
US20080243536A1 (en) | Providing website hosting overage protection by storage on an independent data server | |
EP4158877B1 (en) | Service worker configured to serve multiple single page applications | |
KR20070083566A (en) | Techniques for upstream failure detection and failure recovery | |
US20100125668A1 (en) | Methods, Systems, and Computer Program Products for Enhancing Internet Security for Network Subscribers | |
US11201948B2 (en) | Runtime localized messages for cloud services | |
US11875157B2 (en) | Systems and methods for in-application dynamic content loading | |
CN111147583A (en) | HTTP redirection rewriting method and device | |
US11522864B1 (en) | Secure identity transfer | |
US10049001B1 (en) | Dynamic error correction configuration | |
KR20230003490A (en) | Orchestrated proxy service | |
US12032647B2 (en) | Tenant network for rewriting of code included in a web page | |
EP3588347B1 (en) | Systems and methods for identifying unknown attributes of web data fragments when launching a web page in a browser | |
JP2012181640A (en) | Mail processor and mail processing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: STRANGELOOP, BRITISH COLUMBIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ALSTAD, KENT;CAMPBELL, RICHARD;GRAY, CAMERON;AND OTHERS;REEL/FRAME:017607/0307;SIGNING DATES FROM 20060206 TO 20060215 Owner name: STRANGELOOP, BRITISH COLUMBIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ALSTAD, KENT;CAMPBELL, RICHARD;GRAY, CAMERON;AND OTHERS;SIGNING DATES FROM 20060206 TO 20060215;REEL/FRAME:017607/0307 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: PAT HOLDER NO LONGER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: STOL); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: RADWARE CANADA HOLDINGS INC., CANADA Free format text: ASSET PURCHASE AGREEMENT;ASSIGNOR:STRANGELOOP NETWORKS INC.;REEL/FRAME:033356/0349 Effective date: 20130206 Owner name: RADWARE LTD., ISRAEL Free format text: PURCHASE;ASSIGNOR:RADWARE CANADA HOLDINGS INC.;REEL/FRAME:033358/0570 Effective date: 20130602 Owner name: RADWARE CANADA HOLDINGS INC., CANADA Free format text: MERGER;ASSIGNORS:STRANGELOOP NETWORKS INC.;RADWARE CANADA HOLDINGS INC.;0961404 B.C. LTD.;REEL/FRAME:033358/0390 Effective date: 20130601 Owner name: 0961404 B.C. LTD., CANADA Free format text: ASSET PURCHASE AGREEMENT;ASSIGNOR:STRANGELOOP NETWORKS INC.;REEL/FRAME:033351/0306 Effective date: 20130205 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |