|Publication number||USRE41440 E1|
|Application number||US 12/437,581|
|Publication date||Jul 13, 2010|
|Filing date||May 8, 2009|
|Priority date||Aug 18, 2000|
|Also published as||CN1494680A, CN100399290C, EP1374060A2, US7216149, WO2002017079A2, WO2002017079A3|
|Publication number||12437581, 437581, US RE41440 E1, US RE41440E1, US-E1-RE41440, USRE41440 E1, USRE41440E1|
|Inventors||Paul Roger Briscoe, Cameron Donald Ferstat, Matthew Robert Ganis, Stephen Carl Hammer, Gary Bob Kip Hansen, Sean Alan Harp, Michael Shannon Nichols, Herbert Daniel Pearthree, Paul Reed, Brian James Snitzer|
|Original Assignee||International Business Machines Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (21), Non-Patent Citations (3), Referenced by (20), Classifications (15), Legal Events (2)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This application is a reissue application of U.S. Pat. No. 7,216,149, issued May 8, 2007 on U.S. Ser. No. 09/641,495 filed Aug. 18, 2000.
The present invention relates generally to client-server computer systems and, more specifically, to information access requests to a web site server over a global communications network.
All web pages are written with HyperText Markup Language (HTML). Hypertext and universality are two essential features of HTML. Hypertext means that a programmer can create a link on a web page that leads the visitor to any other web page or to practically anything else on the Internet. Hypertext enables information on the web to be accessed from many different directions. Universality means that because HTML documents are saved as ASCII or text only files, virtually any computer can read a web page. HTML lets the web designer format text, add graphics, sound, and video, and save it all in a text or an American Standard Code for Information Interchange (ASCII) file that any computer can read. The key to HTML is in the tags, which are key words enclosed between less than (<) and greater than (>) signs, that indicate the type of content coming up next. While practically any computer can display web pages, how those pages actually look depends on the type of computer, the monitor, the speed of the Internet connection, and the browser software used to view the page.
A web page is nothing more than a text document written with HTML tags. Like any other text document, web pages have a file name that identifies the documents to the web site designer, the web site visitors, and a visitor's web browser. Uniform Resource Locators (URLs) contain information about where a file is located and what a browser should do with it. Each file on the Internet has a unique URL. The first part of the URL is called the scheme. It tells the browser how to deal with the file that it is about to open. One of the most common schemes to access web pages is HypterText Transfer Protocol (HTTP). The second part of the URL is the name of a server where the file is located followed by the path that leads to the file and the file name. Sometimes, a URL ends in a trailing forward slash with no file name given. In this case, the URL refers to the default file in the last directory in the path (i.e., index.html), which generally corresponds to the home page. For example, consider the web address “census.rolandgarros.org/rc/images/ . . .”. The domain name is “census.rolandgarros.org”. This is the specific host computer on which corresponding web pages reside. The next segment of the URL is the directory (“rc”) and subdirectory “images”) on the host computer that contains a specific web site. The last segment of the URL, represented by the ellipsis mark, is the filename of the specific web page being requested.
URLs can be either absolute or relative. An absolute URL shows the entire path to the file, including the scheme, server name, the complete path, and the file name itself. A relative URL describes the location of the desired file with reference to the location of the file that contains the URL itself. The relative URL for a file that is in the same directory as the current file is simply the file name and extension.
To view a single page, the browser running on a client computer, may request and download numerous files from a web site server. The number of object access requests (“hits”) stored in the web site server's access log will typically exceed the number of distinct client sessions in which clients are accessing information on the web site, reducing the accuracy of the access log.
Data networking is growing at a phenomenal rate. The number of web users is expected to increase by a factor of five over the next few years. The resulting uncontrolled growth of web access requirements is straining all attempts to meet the bandwidth demand. Additionally, although the volume of web traffic on the Internet is staggering, a large percentage of that traffic is redundant, i.e., multiple users at any given site request much of the same content. This means that a significant percentage of the wide area network (WAN) infrastructure carries the identical content and identical requests for accessing it daily. Web caching performs a local storage of web content to serve these redundant user requests more quickly, without sending the requests and the resulting content over the wide area network.
Caching is the technique of keeping frequently accessed information in a location close to the requester. A web cache stores web pages and content on a storage device that is physically or logically closer to the user. This access to stored web content is closer and faster than a web lookup. By reducing the amount of traffic on wide area network links and on already overburdened web servers, caching provides significant benefits to Internet Service Providers (ISPs), enterprise networks, and end users. The two key benefits of web caching are cost savings due to the reduction of WAN bandwidth and improved productivity for end users resulting from quicker access. ISPs can place cache engines at strategic points on their networks to improve response times and lower the bandwidth demand on their backbones. ISPs can station cache engines at strategic WAN access points to serve web requests from local storage, rather than from a distant or overburdened web server. In enterprise networks, the dramatic reduction in bandwidth usage due to web caching allows a lower bandwidth WAN link to service the user base. Alternatively, the organization can add users or add more services that make use of the free bandwidth on the existing WAN link. For the end user, the response of the local web cache is almost three times faster than the download time for the same content over the wide area network. Therefore, users see dramatic improvements in response times, and the implementation of web caching is completely transparent to them.
Web caching offers other benefits including access control, monitoring and operational logging. The cache engine provides network administrators with a simple, secure method to enforce a sitewide access policy through Uniform Resource Locator (URL) filtering. Network administrators can learn which URLs receive hits, the number of hits per second the cache is serving, the percentage of URLs that are served from the cache, along with other related operational statistics.
Web caching starts by an end user accessing a web page over the Internet. While the page is being transmitted to the end user, the caching system saves the page and all of its associated graphics on local storage. The page content is now cached. Another user, or the original user can then access the web page at a later time, but instead of sending the request over the Internet to the web server, the web cache system delivers the web page from local storage. This process speeds download times for the user, and reduces the bandwidth demand on the WAN link. Updating of the cache data can occur in a number of ways depending upon the design of the web cache system.
Web caching can be a major problem for publishers of web content. For example, a publisher can gather an inaccurate number of hits if some of the visitors access web content already in a caching server. Furthermore, if a caching server doesn't update content promptly, it can return expired or stale content to users.
Cache engines are becoming pervasive on the World Wide Web. As a result, the origin web servers do not serve or see the majority of the user requests for web site content. Packet sniffers will not see the requests either, as they are satisfied by cache engines elsewhere on the Internet. The technique of using a single pixel clear GIF (which is not cacheable) has been used to ensure that some record is recorded by the origin server for advertisements for some years. However, this solution only logs information about the request for the single pixel GIF file itself.
The single-pixel transparent GIF (Graphic Interchange Format) is the most flexible tool in a web designer's toolbox. The use of a transparent GIF is a way to discretely control the layout of text and graphics on the web page. No matter where the transparent GIF is placed on the page, it will remain unseen with all background graphics and fills remaining untouched. The single pixel clear GIF has been used before, but the data has not been enriched such that it can be used as a surrogate for the complete set of log records.
The present invention enriches the information recorded in the web logs for the uncacheable single pixel clear GIF by appending additional information to it as Common Gateway Interface (CGI) query string parameters. This enables the log record created by the request for the single pixel clear GIF to function as a “surrogate” for the complete set of log records which would have been created if the page content had not been cached.
The invention is better understood by reading the following detailed description of the invention in conjunction with the accompanying drawings, wherein:
Web server software typically collects and saves information pertaining to each HTTP request, including date and time, the originating Internet Protocol (IP) address, the object requested, and the completion status of the request. The logs are analyzed on a periodic basis to determine the traffic through the server in terms of hits, the number of pages served, and the level of demand for pages of interest during each period.
Internet browser applications allow an individual user to cache web pages on his local hard disk. A user can configure the amount of disk space devoted to caching. The first time a user views a website, that content is saved as files in a subdirectory on that computer's hard disk. The next time the user points to this website, the browser gets the content from the cache without accessing the network. Certain elements of the page, including buttons, icons and images, appear much more quickly then they did the first time the page was opened.
To limit bandwidth demand caused by the uncontrolled growth of Internet use, software developers have developed applications that extend local caching to the network level. The two current types of network level caching products are proxy servers and network caches. Proxy servers are software applications that run on general-purpose hardware and operating systems. A proxy server is placed on hardware that is physically between a web browser client application and a web server. The proxy server acts as a gatekeeper that receives all the packets destined for the web server and examines each packet to determine whether it can fulfill the request itself. If the proxy cannot fulfill the request itself, it forwards the request to the web server. Proxy servers can be used to filter requests, e.g., to prevent employees from accessing specific websites. The problem with using proxy servers is that they are not optimized for caching and can fail under a heavy network load. Traffic is slowed to allow the proxy servers to examine each packet, and the failure of the proxy software or hardware causes all users to lose network access. Furthermore, proxy servers require configuration of each end-user's browser, which is an unacceptable option for ISPs and large enterprises. Because of these shortcomings of proxy servers, applications that create network caches have become popular. These caching-focused software applications are designed to improve performance by enhancing the caching software and eliminating the other slow aspects of proxy server implementations. Because a proxy server is run under a general purpose operating system that involves very high per-process context overhead, they are not easily scaleable to large numbers of simultaneous processes.
Networking product vendors offer cache engines as a single purpose network appliance that stores and retrieves content using caching and retrieval algorithms. Such cache engines are dedicated solely to content management and delivery. Since only web requests are routed to the cache engine, no other user traffic is affected by the caching process. For non-web traffic, the router functions entirely in its traditional role. The communications between a cache engine and a router is defined by a cache control protocol. Under this protocol, the router directs only web requests to the cache engine rather than to the intended server. With a cache engine, a client requests web content in the usual manner. A router running a cache control protocol intercepts Transmission Control Protocol (TCP) port 80 web traffic and routes it to the cache engine. The client is not involved in the transaction, and no changes to the client or browser are required. If the cache engine does not have the requested content, it sends the request to the Internet or Intranet in the usual fashion. The content is returned to and stored at the cache engine. The cache engine returns the content to the client. Upon subsequent requests for the same content, the cache engine fulfills the requests from local storage.
The router 18 intercepts TCP Port 80 web traffic and routes it to the local cache engine 20. The client 12, 14, 16 is not involved in this transaction and no changes to the client computer or browser are required. If the cache engine 20 does not have the requested content, it sends the request via router 18 to the Internet to access an Internet content server 40, 42, 44. The content is returned to, and stored at, the cache engine 20. The cache engine 20 then returns the requested content to the client computer 12, 14, 16 via the router 18. Several cache engines 32, 34, 36 can be placed in a cache farm in a hierarchical fashion at an Internet Service Provider (ISP) site 30. Requests from clients 12, 14, 16 directed through router 18 and ISP server 30, are diverted to the cache farm 32, 34, 36 to fulfill the client request from its storage. If the cache engines 32, 34, 36 are unable to fulfill the request from local storage, a normal web request is made via ISP server 30 over the Internet 50 to an appropriate server 40,42,44 for the requested Internet content. In addition to router 18, routers 26, 46 are also shown connected to ISP server 30. Routers 18, 26, 46 are frequently referred to as Points-of-Presence (POPs). A POP is the location of an access point to the Internet and has a unique Internet IP address. A POP usually includes routers, digital/analog call aggregators, servers and frequently frame relay or Asynchronous Transfer Mode (ATM) switches. Shown connected to router 46 is cache engine 48. Connected to router 26 is cache engine 28 and router 24. Router 24 is connected to a corporate intranet 22.
Because the router redirects packets destined for web servers to the cache engine, the cache engine operates transparently to clients. Clients do not need to configure their browsers to be in proxy server mode. In addition, the operation of the cache engine is transparent to the network. The router operates entirely in its normal role for non-web traffic.
A web object can contain a Hypertext Transfer Protocol (HTTP) header to instruct a browser in a caching server how to cache the web object. For a static image, such as a company logo, the expiration header can be set to “no expiration” so that caching servers can keep the image in the cache forever. In order to gather the exact number of hits on a specific page, e.g., an advertisement, a small image object can be added to the page with the object set to expire immediately, so the caching server won't cache the object. Then, every time a user requests that page, the browser or caching server will retrieve the object from the original web server, and the web server can then count the exact number of requests.
The Common Gateway Interface (CGI) is a simple interface (protocol) for running external programs, software or gateways under an information server in a platform-independent manner. CGI is simply a standardized way for sending information between the server and the script. The CGI script is a program that communicates with the server in a standard way. Currently, the supported information servers are HTTP servers. Each CGI server implementation must define a mechanism to pass data about the request from the server to the script.
An automatic script is executed by the client browser when the web page is loaded. There is no limit to the number of automatic scripts that can be on a web page. The location of the script on the HTML page determines when the script will load. Scripts are loaded in the order in which they appear in an HTML document. An automatic Java Script is added to an HTML document by the following HTML code:
Some of the older browsers cannot run scripts and will not understand the SCRIPT tag. In order to provide information to a visitor accessing an HTML page, an alternate way to provide information is through the use of the NOSCRIPT tag, followed by the information that is treated as regular text. The older browser won't understand the NOSCRIPT tag and will ignore it, but process the following text. The following is added to the HTML document:
In the implementation of the single pixel GIF to create surrogate log files, the following tags and attributes are used as illustrated in
Also illustrated in
In a preferred embodiment of the present invention, a CGI string of data is appended to the SRC attribute for the single pixel GIF at the time the page is published, as follows:
the absolute URL of the page on which the GIF
the number of elements (SRCs) on the page at the time
the URL of the page which requested the current page
(this is done via Java Script).
In addition, the persistent cookie identification of the user's cookie can be appended to the CGI string of data as follows:
the persistent cookie ID of the user cookie (Java
In the event the client browser cannot interpret a scripting language, the NOSCRIPT tag demarcates the HTML statements to be interpreted by the browser. This includes the IMG tag wherein the SRC attribute has a query string after “uc.GIF” that is modified to include the default URL of the HTML page (i.e., “index.html”). The index.html file is the default file for the top level directory on the web site.
In order to serve up web pages, web sites need a host computer and server software that runs on the host. The host manages the communications, protocols, and houses the pages and related software required to create a website on the Internet. The server software resides on the host and serves up the pages, and otherwise acts on the requests sent by the client's browser software. The server handles the HTTP requests and communications with the host operating system, which in turn handles the TCP/IP communications. There are different types of server software that perform different types of services for different types of clients. Specifically, a web server is an HTTP server and its function is to send information to the client software (browser) using the HyperText Transfer Protocol. The client browser requests that the server return an HTML document. The server receives this request and sends back a response. The top portion of the response includes transmission information and the rest of the response is the HTML file. In addition to sending pages to the browser, a web server also passes requests to run CGI scripts to CGI applications. These scripts run external mini-programs, such as a database lookup or interactive forms processing. The server sends the script to the application via CGI and communicates the script back to the browser. The server software also includes configuration files and utilities to secure and manage the website in a variety of ways.
Once the browser has received the HTML file from the processing in logic blocks 310, 312 or 314, a test is made in decision block 318 to determine if the HTML file contains an uncacheable single pixel GIF (represented by uc.GIF in this invention). If it does not, the retrieved cached images are displayed to complete the build of the web requested web page in logic block 316. Processing of the request is then completed as indicated by termination block 326. If, in decision block 318, a uc.GIF request is found in the HTML file, then the uc.GIF and CGI query string are transmitted to the origin web server in logic block 320 where they are analyzed to gather the enriched web server activity data made possible by this invention. The browser again interprets the HTML code and builds the page with source or cached images. Using the example of
When a user visits a website, the browser examines the URL and looks into a cookie file stored on the client computer's hard drive. If the browser finds a cookie associated with that URL, it sends that cookie information to the server. If no cookie is associated with the URL, the server places a cookie inside the cookie file. Some sites may first ask a series of questions, such as name and password, and then will place a cookie on the hard disk with that information in it. This is typical of sites that require registration. Commonly, a GCI script on the server takes the information that the user has entered and then writes a cookie onto the client computer's hard disk. When the user leaves a web site, the cookie information remains on the hard disk so that the site can recognize the user the next time the user visits the web site, unless the cookie has specifically been written to expire when the user leaves the site.
With the capability to gather enriched information through the use of the single pixel GIF described above, much more detailed and accurate information regarding web site activity can be collected and stored in multidimensional databases, including multidimensional implementations of a relational database. Furthermore, this collected data also can be analyzed using relatively new techniques such as On-line Analytical Processing (OLAP), described briefly below.
On-Line Analytical Processing (OLAP) describes a class of technologies that are designed for live ad hoc data access and analysis. While transaction processing generally relies on relational databases, OLAP has become synonymous with multidimensional views of business data. These multidimensional views are supported by multidimensional database technology. OLAP applications are used by analysts who frequently want a higher level, aggregated view of the data, such as total sales by product line, by region, etc. The OLAP database is usually updated in batch mode, often from multiple sources, and provides an analytical backend to multiple user applications.
The corresponding structures, materials, acts, and equivalents of any means plus function elements in any claims below are intended to include any structure, material, or acts for performing the functions in combination with other claimed elements as specifically claimed.
While the invention has been particularly shown and described with reference to embodiments thereof, it will be understood by those skilled in the art that various changes in form and detail may be made without departing from the spirit and scope of the present invention.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5796952 *||Mar 21, 1997||Aug 18, 1998||Dot Com Development, Inc.||Method and apparatus for tracking client interaction with a network resource and creating client profiles and resource database|
|US5848396 *||Apr 26, 1996||Dec 8, 1998||Freedom Of Information, Inc.||Method and apparatus for determining behavioral profile of a computer user|
|US5892917 *||Sep 27, 1995||Apr 6, 1999||Microsoft Corporation||System for log record and log expansion with inserted log records representing object request for specified object corresponding to cached object copies|
|US5913041 *||Dec 9, 1996||Jun 15, 1999||Hewlett-Packard Company||System for determining data transfer rates in accordance with log information relates to history of data transfer activities that independently stored in content servers|
|US5935207 *||Apr 9, 1997||Aug 10, 1999||Webtv Networks, Inc.||Method and apparatus for providing remote site administrators with user hits on mirrored web sites|
|US5991735 *||Aug 11, 1998||Nov 23, 1999||Be Free, Inc.||Computer program apparatus for determining behavioral profile of a computer user|
|US6018619 *||May 24, 1996||Jan 25, 2000||Microsoft Corporation||Method, system and apparatus for client-side usage tracking of information server systems|
|US6018763 *||May 28, 1997||Jan 25, 2000||3Com Corporation||High performance shared memory for a bridge router supporting cache coherency|
|US6023726 *||Jan 20, 1998||Feb 8, 2000||Netscape Communications Corporation||User configurable prefetch control system for enabling client to prefetch documents from a network server|
|US6041355 *||Dec 27, 1996||Mar 21, 2000||Intel Corporation||Method for transferring data between a network of computers dynamically based on tag information|
|US6085229 *||May 14, 1998||Jul 4, 2000||Belarc, Inc.||System and method for providing client side personalization of content of web pages and the like|
|US6094662 *||Apr 30, 1998||Jul 25, 2000||Xerox Corporation||Apparatus and method for loading and reloading HTML pages having cacheable and non-cacheable portions|
|US6363418 *||Oct 16, 1998||Mar 26, 2002||Softbook Press, Inc.||On-line image caching control for efficient image display|
|US6385642 *||Apr 19, 1999||May 7, 2002||Youdecide.Com, Inc.||Internet web server cache storage and session management system|
|US6393479 *||Jun 4, 1999||May 21, 2002||Webside Story, Inc.||Internet website traffic flow analysis|
|US6606581 *||Jun 14, 2000||Aug 12, 2003||Opinionlab, Inc.||System and method for measuring and reporting user reactions to particular web pages of a website|
|US6742040 *||Feb 4, 2000||May 25, 2004||Intel Corporation||Firewall for controlling data transfers between networks based on embedded tags in content description language|
|US7003565 *||Apr 3, 2001||Feb 21, 2006||International Business Machines Corporation||Clickstream data collection technique|
|US20020004733 *||May 7, 2001||Jan 10, 2002||Frank Addante||Method and apparatus for transaction tracking over a computer network|
|US20020147772 *||Feb 8, 2002||Oct 10, 2002||Charles Glommen||Internet website traffic flow analysis|
|US20080052392 *||May 16, 2007||Feb 28, 2008||Jeff Webster||System and Method for Monitoring a User's Online Activity|
|1||*||Computer Knowledge Newsletter-Nov. 1999 Issue.|
|2||*||Computer Knowledge Newsletter—Nov. 1999 Issue.|
|3||*||PCT/EP01/09308, PCT Preliminary Examination Report, Jul. 3, 2003, European Patent Office.|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US7992135 *||Oct 19, 2007||Aug 2, 2011||Adobe Systems Incorporated||Certification of server-side partner plug-ins for analytics and privacy protection|
|US8346889||Sep 30, 2011||Jan 1, 2013||Google Inc.||Event-driven module loading|
|US8352917||Jun 26, 2006||Jan 8, 2013||Adobe Systems Incorporated||Web-beacon plug-ins and their certification|
|US8365150||Jun 17, 2008||Jan 29, 2013||Adobe Systems Incorporated||Multi-party web-beacon-based analytics|
|US8370495||Apr 1, 2010||Feb 5, 2013||Adaptive Computing Enterprises, Inc.||On-demand compute environment|
|US8407319||Mar 24, 2010||Mar 26, 2013||Google Inc.||Event-driven module loading|
|US8453049 *||May 19, 2010||May 28, 2013||Google Inc.||Delayed code parsing for reduced startup latency|
|US8458585||Sep 30, 2011||Jun 4, 2013||Google Inc.||Delayed code parsing for reduced startup latency|
|US8782120||May 2, 2011||Jul 15, 2014||Adaptive Computing Enterprises, Inc.||Elastic management of compute resources between a web server and an on-demand compute environment|
|US8990291 *||Jul 21, 2010||Mar 24, 2015||Empire Technology Development Llc||Information processing apparatus, server-client system, and computer program product|
|US9003423 *||Jul 29, 2011||Apr 7, 2015||Amazon Technologies, Inc.||Dynamic browser compatibility checker|
|US9015324||Mar 13, 2012||Apr 21, 2015||Adaptive Computing Enterprises, Inc.||System and method of brokering cloud computing resources|
|US9075657||Apr 7, 2006||Jul 7, 2015||Adaptive Computing Enterprises, Inc.||On-demand access to compute resources|
|US9112813||Feb 4, 2013||Aug 18, 2015||Adaptive Computing Enterprises, Inc.||On-demand compute environment|
|US9231886||May 5, 2015||Jan 5, 2016||Adaptive Computing Enterprises, Inc.||Simple integration of an on-demand compute environment|
|US9262396||Mar 26, 2010||Feb 16, 2016||Amazon Technologies, Inc.||Browser compatibility checker tool|
|US9396478||Sep 14, 2012||Jul 19, 2016||Adobe System Incorporated||Web-beacon plug-ins and their certification|
|US9703761||May 9, 2013||Jul 11, 2017||Google Inc.||Delayed code parsing for reduced startup latency|
|US20080249905 *||Jun 17, 2008||Oct 9, 2008||Omniture, Inc.||Multi-party web-beacon-based analytics|
|US20120023156 *||Jul 21, 2010||Jan 26, 2012||Empire Technology Development Llc||Information processing apparatus, server-client system, and computer program product|
|U.S. Classification||709/217, 709/219, 711/138, 709/203|
|International Classification||G06F12/00, G06F11/34, G06F13/00, G06F15/00, G06F15/16|
|Cooperative Classification||G06F2201/885, G06F11/3409, G06F2201/875, G06F2201/87, G06F11/3476|
|Oct 1, 2010||FPAY||Fee payment|
Year of fee payment: 4
|Jun 12, 2014||FPAY||Fee payment|
Year of fee payment: 8