`
`(12) United States Patent
`Gallant et al.
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 7,076,500 B2
`Jul. 11, 2006
`
`(54) SELECTIVE FILE CACHING METHOD
`
`(76) Inventors: David Gallant, 4726 E. 107th Ave.,
`Thornton, CO (US) 80233; Rex
`Vedder, 2830 Heidelberg Dr. Boulder,
`CO (US) 80305
`
`(*) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 521 days.
`(21) Appl. No.: 10/610,142
`(22) Filed:
`Jun. 30, 2003
`(65)
`Prior Publication Data
`
`2003/0009563 A1* 1/2003 Douglis et al. ............. 709,227
`2003/0078964 A1* 4, 2003 Parrella et al. ...
`... 709,203
`2004/0181598 A1* 9/2004 Paya et al................... 709,227
`OTHER PUBLICATIONS
`NetCloak Version 3.1 User's Guide: Serving Cloaked Files,
`1996-2999, 3 page exerpt.*
`“How to Prevent the Storing of File in the Hard Disk
`Cache':
`http://www.web-caching.com/forums/Forum1/
`HTML/000233.html; Jun. 25, 2003.
`“How Disk Caching Works in Java Plug-in': http://java.sun.
`com/products/plugin/1.3/docs/cache.html; Jun. 25, 2003.
`* cited by examiner
`Primary Examiner Wayne Amsbury
`
`US 2004/O2677O2 A1
`
`Dec. 30, 2004
`
`(57)
`
`ABSTRACT
`
`(51) Int. Cl.
`(2006.01)
`G06F 7/00
`(52) U.S. Cl. ....................... 707/102; 709/246; 711/202
`(58) Field of Classification Search ................ 707/102;
`709/246; 711/202
`See application file for complete search history.
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`6,029, 175 A * 2/2000 Chow et al. ............. TO7 104.1
`6, 192,398 B1
`2/2001 Hunt .......................... TO9,213
`6,457,103 B1* 9/2002 Challenger et al. ......... T11 133
`6,557,054 B1
`4/2003 Reisman ...................... T10/33
`3.
`R : 4.3.
`plant al. ........... 2.} | |
`6,976,090 B1* 12/2005 Ben-shauletal. A
`6,988,135 B1* 1/2006 Martin et al. ............... TO9,224
`2002/0049834 A1* 4/2002 Molnar ....................... TO9,219
`
`A method for improving performance through selective file
`caching is disclosed. The caching policy of a clients
`browser cache is set to cache all files. Web page files that
`reference a dynamic file include JavaScript code that
`mangles the dynamic filename. Such that a reference by the
`web page file to the dynamic file is unique each time a
`browser, processes the web page file. In one embodiment,
`the filename is mangled by appending to it a known string
`followed by a 12-digit timestamp. Consequently, the
`mangled filename misses in the cache, forcing the browser
`to fetch the dynamic file from the web server. The web
`server recognizes the filename is in the mangled format,
`regenerates the original filename, and returns the file to the
`client. Static filenames are not mangled; hence, they are
`satisfied from the browser cache. The method also works to
`selectively defeat network caching.
`53 Claims, 11 Drawing Sheets
`
`Web BrOWSer Operation
`
`user inputs URL of desired web page, e.g., by clicking on link
`or selecting bookmark
`
`302
`
`hit in browser cache?
`
`Yes
`
`issue http request for URL to web server
`
`receive file specified by URL and put in cache
`
`process file
`
`
`
`
`
`
`
`
`
`
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 1
`
`
`
`U.S. Patent
`
`Jul. 11, 2006
`
`Sheet 1 of 11
`
`US 7,076,500 B2
`
`Fig. 1
`
`Computer Network
`
`? 100
`
`
`
`Web server 102
`
`Web server code
`
`104
`
`web page files
`
`106
`
`web browser
`
`124
`
`client 122
`
`browser cache
`
`126
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 2
`
`
`
`U.S. Patent
`
`Jul. 11, 2006
`
`Sheet 2 of 11
`
`US 7,076,500 B2
`
`Fig. 2
`
`Web Server Operation
`
`web server receives http request
`
`
`
`http request in
`mangled format?
`
`web server regenerates natural filename
`from mangled form in http request
`
`208
`
`
`
`
`
`
`
`web server returns requested web pace file
`C
`pag
`
`web server returns web page file
`specified by natural filename
`
`212
`
`Fig. 3
`
`Web BrOWSer Operation
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`user inputs URL of desired web page, e.g., by clicking on link
`or selecting bookmark
`
`302
`
`hit in browser cache?
`
`issue http request for URL to web server
`
`receive file specified by URL and put in cache
`
`process file
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 3
`
`
`
`U.S. Patent
`
`Jul. 11, 2006
`
`Sheet 3 of 11
`
`US 7,076,500 B2
`
`Fig. 4
`
`Web BrOWSer Operation
`
`? 312
`
`from 308
`
`fetch any included JavaScript
`files from Web server
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`JavaScript found?
`
`execute JavaScript, which may
`include creating html code with link
`or reference to mangled filenames
`
`406
`
`file reference found?
`
`hit in browser cache?
`
`Yes
`
`
`
`end of file?
`
`
`
`execute html Command
`
`issue http request for referenced
`file to Web server
`
`receive referenced file and put in
`cache
`
`display referenced file
`
`48
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 4
`
`
`
`U.S. Patent
`
`Jul. 11, 2006
`
`Sheet 4 of 11
`
`US 7,076,500 B2
`
`Fig. 5
`
`
`
`
`
`
`
`
`
`
`
`Web Page JavaScript HTML Code Creation
`
`mangle natural filename of dynamic file and put in JavaScript variable
`
`insert mangled filename into html code format in JavaScript variable
`
`do document.Write() of JavaScript variable to create html code for browser to display, e.g.
`link with mangled filename for user to click on, or reference to mangled filename of imagel
`appletiaudiovideo file to be displayedlexecutedlplayed
`
`502
`
`504
`
`506
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 5
`
`
`
`U.S. Patent
`
`Jul. 11, 2006
`
`Sheet S of 11
`
`US 7,076,500 B2
`
`Fig.6A
`
`Selective File Caching Operation Example
`
`user sets browser caching policy to cache all possible files
`
`user points browser to web server
`
`browser issues http request to web server for index.html (or I)
`
`web server returns file with login screen
`
`O
`
`web server returns first page (page1.html)
`
`page1.html code mangles picDyn.jpg, creates.html code with reference to mangled pictyn.jpg, and
`commands browser to display mangled picDyn.jpg
`
`browser checks cache for mangled picDyn.jpg and gets a miss
`
`browser issues http request with mangled picdyn.jpg
`
`web server receives http request, recognizes mangled format, regenerates picDyn.jpg, and returns
`picyn.jpg
`
`602
`
`604
`
`606
`
`608
`
`612
`
`64
`
`616
`
`618
`
`622
`
`524
`
`
`
`browser receives picDyn.jpg, places it in browser cache referenced as mangled picdyn.jpg, and displays
`picyn.jpg
`
`626
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 6
`
`
`
`U.S. Patent
`
`Jul. 11, 2006
`
`Sheet 6 of 11
`
`US 7,076,500 B2
`
`Fig. 6B
`
`Selective File Cachind Operation Example (cont.
`
`(A)
`
`
`
`browser receives picStatjpg, places it in browser cache, and displays picStat.jpg
`
`browser to display link for user to click on
`
`pagedyn.html
`
`(B)
`
`638
`
`642
`
`644
`
`646
`
`648
`
`654
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 7
`
`
`
`U.S. Patent
`
`Jul. 11, 2006
`
`Sheet 7 of 11
`
`US 7,076,500 B2
`
`Fig. 6C
`
`Selective File Caching Operation Example (COnt.)
`
`(B)
`
`pagedyn.html Code mangles picDyn.jpg, creates html code with reference to mangled picDyn.jpg, and
`commands browser to display mangled picyn.jpg
`
`browser checks cache for mangled pictyn.jpg and gets a miss
`
`browser issues http request with mangled picDyn.jpg
`
`web server receives http request, recognizes mangled format, regenerates picDyn.jpg, and returns
`picDyn.jpg
`
`
`
`
`
`browser receives picbyn.jpg, places it in browser cache referenced as mangled pictyn.jpg, and displays
`picDyn.jpg
`
`page.Dyn.html code commands browser to display picStat.jpg
`
`browser checks cache for picStat.jpg and get a hit
`
`browser displays picStati
`plays p
`Pg
`
`658
`
`662
`
`664
`
`666
`
`668
`
`672
`
`674
`
`676
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 8
`
`
`
`U.S. Patent
`
`Jul. 11, 2006
`
`Sheet 8 of 11
`
`US 7,076,500 B2
`
`Fig. 7
`
`Web Page Code Example
`
`ace1.html:
`1 II include JavaScript source code file with mangling functions
`2 <script language="JavaScript" src="mangle.js"><scripts
`
`11 II Mangle picDyn.jpg, create html code with reference to mangled filename,
`12 II
`and command browser to display created html
`13 war timeDateStr = top.getTimeString();
`14 varimageName = top.makePageName("picbyn.jpg", timeDateStr, "jpg");
`15 html+=''<img src="+ imageName + "width="200" height="200" align="left">';
`16 document write(html);
`
`21 ll command browser to display picStat.jpg
`22 <imgsrc="picStat.jpg" width="200" height="200" align="right">
`
`31 lMangle pagedyn.html, create html code with link to mangled name,
`32 II
`and command browser to display created html
`33 war timeDateStr = top.getTimeString();
`34 war linkName = top.makePageName("pagedyn.html", timeDateStr, ".html");
`35 html+="To initialize the array, Cahref="linkName"> click hereglas';
`36 document.Write(html);
`
`page Dyn.html:
`1 II include JavaScript source code file with mangling functions
`2 <script language="JavaScript" src="mangle.js"><script)
`
`11 Il Mangle picdyn.jpg, create html code with reference to mangled filename,
`12 II
`and command browser to display created html
`13 war timeDateStr = top.getTimeString();
`14 war imageName = top.makePageName("picyn.jpg", timeDateStr, "jpg");
`15 html+= 'Kimgsrc="+ imageName + "width="200" height="200" align="left">';
`16 document write(html);
`
`21 II command browser to display picStat.jpg
`22 kimg src="picStat.jpg" width="200" height="200" align="right">
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 9
`
`
`
`U.S. Patent
`Fig. 8
`
`Jul. 11, 2006
`
`Sheet 9 of 11
`
`US 7,076,500 B2
`
`Mangle.js JavaScript Source Code
`
`function getTimeString()
`{
`-
`war currentdate F new Date();
`war curate = currentdate valueOf();
`war curateStr = new String(curdate.toString());
`war strlength = curdateStr.length;
`if (strength < 12)
`Il Pad on left with Os
`curdateStr="000000000000"+ curbateStr;
`strlength = curDateStr.length;
`
`war returnOateStr = curDatestr substring(strlength - 12);
`return returnOateStr;
`
`function makePageName(naturalName, timestr, suffix)
`varinStr = new String(naturalName);
`war ZPos = instrindexOf("Z");
`if (ZPos ==-1)
`Il No time on name - add one
`var dotPos = instr.indexOf(suffix);
`war outStr = instr.substring(0, dotPos) + "Z" + timeStri suffix;
`}
`else
`il is already a time - put a new time
`war outStr = instr.substring(0, ZPos) + "Z"+ timeStrt suffix;
`
`return outStr;
`
`Example
`index.html
`Natural filename input:
`Mangled filename output: index Z123456789.012.html
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 10
`
`
`
`U.S. Patent
`
`Jul. 11, 2006
`
`Sheet 10 of 11
`
`US 7,076,500 B2
`
`Fig. 9
`
`Web Server Natural Filename Regeneration Code
`
`void RegenerateHtmlFileName(sbyte" mangled Name)
`{
`int thisNamelength;
`Il Change the name if it meets the criteria: "I" ZXXXXXXXXXXXX.html"
`Il Look at the last 19 digits ZXXXXXXXXXXXX.html
`thisNamelength = strlen(mangled Name);
`if (thisNamelength > 20)
`if ((mangledName(thisNamelength - 19 =='') 88 (mangled Name(thisNamelength. 18) == "Z"))
`II Remove the ZXXXXXXXXXXXX
`mangled Name(thisNamelength - 19 ="...";
`mangled.Name(thisNamelength. 18) = "h";
`mangled Name thisNameLength - 17 = 't';
`mangled Name(thisNamelength - 16 = 'm',
`mangled Name(thisNamelength. 15) = "I';
`mangled Name(thisNamelength. 14) = 0; Il Terminate
`
`Exam
`index_Z987654321098.html
`Mangled filename input:
`Regenerated Natural filename output: index.html
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 11
`
`
`
`U.S. Patent
`
`Jul. 11, 2006
`
`Sheet 11 of 11
`
`US 7,076,500 B2
`
`Fig. 10
`
`Computer NetWOrk
`
`? 1000
`
`web server 102
`
`web server code
`
`04
`
`web page files
`
`106
`
`Web caching
`proxy server 1032
`
`proxy server code
`
`1034
`
`network cache
`
`1036
`
`
`
`web browser
`
`124
`
`browser cache
`
`126
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 12
`
`
`
`US 7,076,500 B2
`
`1.
`SELECTIVE FILE CACHING METHOD
`
`FIELD OF THE INVENTION
`
`This invention relates in general to the field of web
`applications and particularly to caching of files transferred
`by a web server to a web client.
`
`BACKGROUND OF THE INVENTION
`
`2
`from the web server and displayed on the client, computer.
`One cause of the delay is the slow transfer speed of data
`across the network relative to the data transfer rates from the
`client computer disk drive, for example. The client computer
`may be connected to the network by a 56K modem, for
`example, which has relatively slow data transfer speed. Even
`if the client computer is connected to the network via a faster
`medium, Such as cable modem or a T1 connection, Some of
`the web page files which must be transferred over the
`network from the web server to the client are so large, such
`as Some image files, that they require a relatively long time
`to transfer even at high transfer rates.
`To reduce the delay, web browsers typically employ a
`cache, referred to as a browser cache, on a mass storage
`device of the client computer, such as a disk drive. When a
`browser retrieves a file from a web server, the browser saves
`a copy of the file in the browser cache. The next time the file
`is requested, the browser checks the browser cache to see if
`the requested file is present in the cache. A query to the
`browser cache revealing the file is hot present is referred to
`as a cache miss. A query to the browser cache revealing the
`file is present is referred to as a cache hit. If the file hits in
`the cache, then the browser can satisfy the request for the file
`from its cache instead of issuing an http request on the
`network to the web server. In the example above,
`index.html, picture A.jpg, and picture B.jpg will all be
`cached in the browser cache after being returned by the web
`server. Future accesses to these files may be satisfied from
`the browser cache, thereby alleviating the need to incur
`again the potentially long delays associated with transferring
`the files from the web server across the network.
`However, the information in web page files transferred
`from a web server to a client may be classified into two
`categories with respect to file caching. A static file is a file
`whose content does not change. A common example of a
`static file is an image file. A dynamic file is a file whose
`content may change. An example of a dynamic file is an html
`file that contains changing content, such as player statistics
`of a basketball game in progress, or stock market sales price
`information. Caching of static files is beneficial. However,
`caching of dynamic files may result in undesirable operation
`since the user may receive Stale or out-of-date information.
`Current browser caching technology does not handle the
`distinction between static files and dynamic files well. For
`example, Internet Explorer enables a user to choose from
`four caching policy settings. A first setting specifies that
`when the user returns to a previously viewed web page, the
`browser checks with the web server for changes to the page
`since the page was last accessed. That is, the browser ignores
`its cache and issues a new http request for all the files
`making up the web page. A second setting specifies that
`when the user returns to a previously viewed web page, the
`browser never checks with the web server for changes to the
`page. That is, the web browser always look to its cache for
`all requested files, and never makes a new request for a file
`that hits in the browser cache, even though it may be
`possible that a newer version of the file exists on the web
`server, i.e., even though the file's contents may have
`changed. With this setting, the user must click on the Refresh
`button to force the web server to be re-accessed. A third
`setting specifies that when the user returns to a previously
`viewed web page, the browser does not check with the web
`server unless the previous visit was in an earlier session of
`the browser or on a previous day. The fourth setting is
`similar to the third setting, except that if the browser
`determines that the files on the page are changing infre
`quently, the browser checks with the web server even less
`
`10
`
`15
`
`30
`
`35
`
`A web browser is a computer program used for accessing
`sites or information on a network, such as the World Wide
`Web (WWW). Some of the more commonly used web
`browsers are Microsoft Internet Explorer R, Netscape Navi
`gator R, Opera R, Mozilla(R), and Apple Safari(R). A client
`computer is a computer that executes a web browser. A web
`page is one or more files containing information that may be
`displayed on a client computer by a web browser. A web
`server is a computer in the network to which the client
`computer is connected that stores web page files.
`A web browser user accesses a web page by providing
`input, Such as keyboard or mouse input, which specifies the
`desired web page. The input is a universal resource locator
`(URL), commonly referred to as a web page address. An
`example of a web page URL is http://www.google.com.
`25
`Another example of a URL is simply an Internet Protocol
`(IP) address of the web server, such as http://216.239.36.10.
`Yet another example of a URL is the address of a specific file
`on a web server, such as http://yourfavoriteserver.com/in
`dex.html. A hypertext link, or link, is text or an image
`displayed by a web browser that has a URL associated with
`it. When a user clicks on a link, the user is requesting the
`web browser to access the file or web page referred to by the
`URL associated with the link. A hypertext transfer protocol
`(http) request is a request issued by a web browser onto the
`network to retrieve from a web server a file specified by the
`URL.
`A web page may be comprised of many individual files
`that must be transferred over the network from the web
`server to the client computer. A common type of web page
`file is a hypertext markup language (HTML or html) file.
`HTML is a programming language used to create web pages.
`In addition to html code, an html file may also include code
`in other programming languages, such as JavaScript(R) or
`VBScript(R). Another common type of web page file is an
`image or graphics file. Such as a .gif, jpg, or pdf file. Other
`types of web page files are audio, video, and applet files.
`When a web browser parses an html file, it may encounter
`a reference to another file on the web server, such as a
`graphics file or a JavaScript file.
`Consider the following web page named index.html,
`which contains html Source code and references to two
`external graphics files referred to as picture A.jpg and
`picture B.jpg. A user points his browser at http://www.y-
`ourfavoritewebserver.com/index.html. The web browser
`issues to the web server an http request on the network for
`index.html. The web server returns index.html to the client
`computer. The browser parses through the code contained in
`index.html and determines the index.html code references
`picture A.jpg and picture B.jpg on the web server. In
`response, the browser issues an http request for pic
`ture A.jpg, the web server returns picture A.jpg, and the
`browser displays picture A.jpg; the browser issues an http
`request for picture B.jpg, the web server returns picture B
`jpg, and the browser displays picture B.jpg.
`65
`Web browser users are familiar with the relatively long
`delay experienced when waiting for a web page to be loaded
`
`40
`
`45
`
`50
`
`55
`
`60
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 13
`
`
`
`3
`frequently. Other browsers include a setting that allows the
`user to specify an age; if the cached version of the file is
`older than the specified age, the browser accesses the server
`rather than satisfying the request out of the cache.
`As may be seen from the discussion above, current
`browsers employ a limited ability to determine whether an
`entire web page and its associated files should or should not
`be cached. However, the present inventors are not aware of
`a web browser that has the ability to determine which
`individual files that make up a web page must be re-fetched
`from the web server in order to display the current content
`of the web page. That is, the browser does not have the
`ability to determine which files of a web page are static and
`which are dynamic. The inability to distinguish between
`static and dynamic web page files may be detrimental to
`dynamic web application performance since the user must
`set the browser caching policy to disable caching in order to
`avoid receiving stale data, which forces all the web page
`files to be re-fetched from the web server. However, in some
`applications a large percentage of the web page content may
`be contained in static files that could be satisfied from the
`cache, and the web page files that are dynamic may consti
`tute only a small percentage of the data that must be
`transferred from the server to the client.
`Using the example above, assume index.html is a 4 KB
`25
`dynamic file, and that picture A.jpg and picture B.jpg are
`each static 2 MB files. If a distinction could be made
`between static and dynamic files, the browser could satisfy
`Subsequent requests for picture A.jpg and picture B.jpg
`from its cache, and re-fetch only index.html from the server,
`thereby potentially improving performance Substantially.
`Therefore what is needed is a method for selectively
`defeating browser caching on a file-by-file basis so that
`dynamic files are obtained from the web server, while static
`files are quickly obtained from the browser cache, thereby
`improving overall performance.
`Another limitation of current web browser caching tech
`nology with respect to a web page that includes both static
`and dynamic files is that it does not provide an ability to
`control file caching that may be performed by other com
`40
`puters in the network between the client computer and the
`web server.
`Therefore what is also needed is a method for selectively
`defeating network file caching on a file-by-file basis so that
`dynamic files are obtained from the web server while static
`files are quickly obtained from the browser cache, thereby
`improving overall performance.
`
`30
`
`35
`
`45
`
`US 7,076,500 B2
`
`5
`
`10
`
`15
`
`4
`determining for each http request whether the filename is an
`altered form of an original filename specifying a file on the
`web server, the original filename having been altered to
`avoid the second filename hitting in the browser cache. The
`method also includes regenerating the original filename
`from the filename included in the http request, if the file
`name is an altered form of the original filename.
`In another aspect, the present invention provides a method
`for effecting selective file caching in a web browser cache.
`The method includes a client computer setting a cache
`policy of the browser cache to cache all files whenever
`possible, and mangling a natural filename to create a
`mangled filename. The natural filename refers to a file on a
`web server. The method also includes the client computer
`issuing to the web server an http request for the mangled
`filename. The method also includes the web server receiving
`the http request, regenerating the natural filename from the
`mangled filename, and returning to the client computer the
`file referred to by the natural filename.
`In another aspect, the present invention provides a com
`puter network. The computer network includes a web server
`that stores a first file having static content and a first
`filename, and second file having dynamic content and a
`second filename. The computer network also includes a
`client computer, coupled to the web server, having a browser
`cache. The client computer is configured to satisfy a request
`for the first file from the browser cache. The client computer
`is also configured to issue to the web server an http request
`for the second file using a mangled version of the second
`filename, which is mangled to miss in the browser cache.
`The web server is configured to regenerate the second
`filename from the mangled filename and return the second
`file to the client computer, in response to the http request.
`An advantage of the present invention is that it improves
`the performance of web applications running on client web
`browsers by virtue of its selective caching method. Advan
`tageously, the present invention achieves the performance
`increase by working with off-the-shelf browsers without
`requiring modification to the browser, other than setting the
`caching policy of the browser. Another advantage of the
`present invention is that it also defeats network level file
`caching for files with dynamic content, in addition to defeat
`ing web browser caching.
`Other features and advantages of the present invention
`will become apparent upon study of the remaining portions
`of the specification and drawings.
`
`SUMMARY
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`The present invention provides a method and network for
`altering dynamic filenames Such that they miss in a browser
`cache and network cache, and then having the web server
`regenerate the altered filename into the original filename on
`the web server. In one aspect, the present invention provides
`a method for improving web application performance
`through selective file caching in a browser cache. The
`method includes altering a first filename to create a second
`filename. The first filename specifies a file on a web server.
`The second filename has a high probability of missing in the
`browser cache. The method also includes issuing a request
`to the web server for the second filename.
`In another aspect, the present invention provides a method
`for achieving selective file caching in a browser cache of a
`client computer. The method includes a web server receiving
`http requests from the client computer. Each of the http
`requests includes a filename. The method also includes
`
`50
`
`55
`
`60
`
`65
`
`FIG. 1 is a block diagram of a computer network accord
`ing to the present invention.
`FIG. 2 is a flowchart illustrating operation of the web
`server of FIG. 1 according to the present invention.
`FIG. 3 is a flowchart illustrating operation of the web
`browser of FIG. 1 according to the present invention.
`FIG. 4 is a flowchart illustrating block 312 of FIG. 3 in
`detail according to the present invention.
`FIG. 5 is a flowchart of illustrating script code, such as
`JavaScript code, in a web page file. Such as the web page
`files of FIG. 1, creating HTML code including a mangled
`filename according to the present invention.
`FIG. 6 is a flowchart illustrating an example of selective
`file caching operation according to the present invention.
`FIG. 7 is a partial source code listing of two HTML files
`used in the example of FIG. 6 according to the present
`invention.
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1013, p. 14
`
`
`
`US 7,076,500 B2
`
`5
`FIG. 8 is a partial JavaScript source code listing of
`functions used to create a mangled filename according to the
`present invention.
`FIG. 9 is a partial C language source code listing of a
`function used to regenerate a mangled filename to its cor
`responding natural filename according to the present inven
`tion.
`FIG. 10 is a block diagram of a computer network
`according to an alternate embodiment of the present inven
`tion.
`
`DETAILED DESCRIPTION
`
`10
`
`15
`
`6
`web server 102 runs a network operating system, Such as
`Windows NTR), Novell NetWare(R), or Linux(R).
`In another embodiment, web server 102 comprises a
`management controller in a mass storage controller, such as
`a redundant array of inexpensive disks (RAID) controller.
`The management controller comprises an embedded micro
`processor running an embedded real time operating system,
`such as VxWorks(R) by Wind River International R. Web
`server 102 enables a user to manage and monitor the RAID
`controller. For example, web server 102 enables a user to
`configure one or more physical disk drives into one or more
`logical drives by selecting the number of physical disk
`drives to be included in a logic drive, to configure the RAID
`level of the logical drive, and to replace failed physical disk
`drives and repair a logical drive after replacement of a failed
`drive. Web server 102 also enables the user to monitor status
`of the controller and drives, such as drive temperature or
`failure, logical drive initialization status, etc. Consequently,
`many of the web page files 106 on web server 102 are
`dynamic files since they contain content that is changing.
`Web server code 104 receives http requests issued by web
`browser 124 for web page files 106 via network 112 and
`returns the requested files 106 to client computer 122 via
`network 112. In particular, web server code 104 is config
`ured to recognize http requests for web page files 106
`wherein the filename of the requested web page file 106 has
`been mangled in order to defeat file caching by browser
`cache 126, and to regenerate the original filename, referred
`to herein as the natural filename, of the requested web page
`files 106, as described in detail below. In one embodiment,
`web server code 104 receives an individual http request from
`client computer 122 for a single one of web page files 106,
`and returns the requested web page file 106 to client com
`puter 122.
`Referring now to FIG. 2, a flowchart illustrating operation
`of web server 102 of FIG. 1 according to the present
`invention is shown. Flow begins at block 202.
`At block 202, web server 102 receives an http request
`from network 112, such as from client computer 122 of FIG.
`1. Flow proceeds to decision block 204.
`At decision block 204, web server code 104 determines
`whether the filename portion of the http request is in a
`mangled format. If so, flow proceeds to block 208; otherwise
`flow proceeds to block 206.
`The mangled format is determined from the manner in
`which the natural filenames of web page files 106 are
`mangled. In the present disclosure, mangling a filename is
`altering the filename into a mangled filename Such that the
`mangled filename has a very high likelihood of missing in a
`cache (such as browser cache 126 of FIG. 1 or in network
`cache 1036 of FIG. 10), and such that the natural filename
`may be regenerated from the mangled filename.
`In one embodiment, a natural filename is mangled by
`appending 14 characters to the root portion of the natural
`filename. The root portion comprises the portion of the
`filename up to but not including the “..” and the suffix. For
`example, the root of the filename “index.html is “index”. In
`one embodiment, the 14 appended characters are
`Z”
`followed by a unique 12-digit timestamp. In one embodi
`ment, the timestamp is obtained from the operating system
`running on client computer 122. Another embodiment is
`contemplated as described below, in which the timestamp is
`obtained from the operating system running on web server
`102. In one embodiment, the timestamp specifies the number
`of seconds elapsed from Jan. 1, 1970 until the current date
`and time.
`
`Referring now to FIG. 1, a block diagram of a computer
`network 100 according to the present invention is shown.
`The computer network 100 includes a client computer 122
`and web server 102 coupled a network 112. Client computer
`122 includes a web browser 124 and a browser cache 126,
`described in more detail below. Web server 102 includes
`web server code 104 and web page files 106, described in
`more detail below. In one embodiment, the network 112
`comprises the world-wide-web (WWW). However, network
`112 may be any network for enabling two or more computers
`to communicate with one another. In one embodiment, the
`client 122 and the web server 102 communicate by trans
`mitting and receiving internet protocol (IP) packets. Web
`server 102 and client computer 122 may be coupled to
`network 112 by any of various means, including twisted pair
`telephone wires, cable, Ethernet, Fibre Channel, Infiniband
`(IB), Token Ring, Arcnet, FDDI, LocalTalk, or ATM.
`Client computer 122 comprises any of various computer
`systems configurable to execute web browser 124 and to
`store web page files in browser cache 126. Examples of
`computer systems configurable to execute web browser 124
`include personal computers, notebook computers, worksta
`tion computers, mainframe computers, handheld computers,
`pocket PCs, personal digital assistants, and the like.
`Web browser 124 maintains browser cache 126 of web
`page files 106 previously fetched from web server 102, as
`well as of files received from other web servers coupled to
`network 112. Web browser 124 enables a user to set a
`caching policy for browser cache 126 similar to the caching
`policies described above.