P
USRE42169EExpiredUtilityPatentIndex 50

Method, apparatus, and computer program product for efficient server response generation using intermediate state caching

Assignee: REHLE VISUAL COMM LLCPriority: May 25, 1999Filed: Dec 22, 2005Granted: Feb 22, 2011
Est. expiryMay 25, 2019(expired)· nominal 20-yr term from priority
Inventors:WEBER JAY C
H04L 2101/365H04L 61/00H04L 61/30H04L 67/02H04L 67/142
50
PatentIndex Score
0
Cited by
47
References
88
Claims

Abstract

Disclosed is a system for improving server efficiency by caching intermediate states encountered in generating responses to requests. The results of a mapping from an external name for a resource to an internal name for the resource may be cached as may the response header lines, or the body of the response message. In another disclosed aspect, candidates for intermediate state caching are selected from plain and small files. When the resource involves the product of an executable, another aspect involves delaying parsing request headers until necessary and then only parsing the headers required for generating the response.

Claims

exact text as granted — not AI-modified
1. A computer-implemented method for efficiently generating responses for repeated resource requests comprising:
 receiving a first request for a first resource, said first request comprising a resource identifier and request modifying information;  
 determining whether generating a response for said first request requires parsing said request modifying information; and, if not,  
 generating said response without parsing said request modifying information.  
 
     
     
       2. The computer-implemented method of  claim 1  wherein the request modifying information includes request headers. 
     
     
       3. The computer-implemented method of  claim 1  wherein generating the response for the first request requires parsing said request modifying information if the request is generated by executing instructions. 
     
     
       4. The computer-implemented method of  claim 3  wherein parsing the request modifying information includes parsing only a subset of the request modifying information necessary for generating the request. 
     
     
       5. The computer-implemented method of  claim 3  wherein the executing the instructions comprises executing a servlet. 
     
     
       6. The computer-implemented method of  claim 3  wherein the executing the instructions comprises executing a script. 
     
     
       7. The computer-implemented method of  claim 3  wherein the executing the instructions comprises executing a data-base query. 
     
     
       8. Apparatus comprising a processor, a memory, a network interface, and a file system, programmed instructions configuring said apparatus to accept connections in order to service requests by sending responses thereto, said apparatus further configured with programmed instructions comprising:
 a request receiver configured for receiving a first request for a first resource, said first request comprising a resource identifier and request modifying information;  
 a response generator configured for generating a response to said first request and further configured for determining whether generating said response requires parsing said request modifying information; and  
 a request modifying information parser configured to parse request modifying information only when said response generator determines generating said response requires parsing said request modifying information.  
 
     
     
       9. The apparatus of  claim 8  wherein the response generator configured to determine that generating the response requires parsing if the response generator to generate the response by executing instructions. 
     
     
       10. The apparatus of  claim 8  wherein the request modifying information parser configured to parse only a subset of the request modifying information necessary for generating the response. 
     
     
       11. The apparatus of  claim 8  wherein the request modifying information includes request headers. 
     
     
       12. The apparatus of  claim 9  wherein the instructions is a servlet. 
     
     
       13. The apparatus of  claim 9  wherein the instructions is a database query. 
     
     
       14. The apparatus of  claim 9  wherein the instructions is a script. 
     
     
       15. A computer program product comprising a non- transitory  computer-readable medium having computer readable instructions encoded thereon for reducing parsing of request modifying information, comprising; :
 computer program instructions configured to cause a computer to receive a first request for a first resource, said first request comprising a resource identifier and request modifying information;  
 computer program instructions configured to cause a computer to determine whether generating a response for said first request requires parsing said request modifying information; and  
 computer program instructions configured to cause a computer to generate said response without parsing said request modifying information if generating said response does not require parsing said request modifying information.  
 
     
     
       16. A computer- implemented method for efficiently generating responses for repeated resource requests comprising:      receiving a first request for a first resource, said first request including a resource identifier and one or more parameters;        determining whether generating a response for said first request requires parsing said one or more parameters; and, if not,        generating said response without parsing said one or more parameters.      
     
     
       17. The method of  claim 16 , wherein said first request is an HTTP request.  
     
     
       18. The method of  claim 16 , wherein said first request corresponds to a request for an enhanced television resource.  
     
     
       19. The method of  claim 16 , wherein said resource identifier is an URI.  
     
     
       20. The method of  claim 16 , wherein said one or more parameters include one or more request headers.  
     
     
       21. The method of  claim 16 , wherein said determining is based at least in part on whether generating a response for said first request requires running executable code.  
     
     
       22. The method of  claim 16 , wherein determining is based at least in part upon cached information indicative of a file type of said first resource.  
     
     
       23. The method of  claim 16 , further comprising parsing said one or more parameters if said parsing is required to generate said response for said first request.  
     
     
       24. The method of  claim 16 , further comprising executing code as a part of generating said response for said first request.  
     
     
       25. The method of  claim 24 , wherein said code is a servlet.  
     
     
       26. The method of  claim 24 , wherein said code is a script.  
     
     
       27. The method of  claim 24 , wherein said code is a database query.  
     
     
       28. The method of  claim 24 , wherein said method further comprises parsing one or more request headers in said first request if responding to said first request requires running executable code.  
     
     
       29. The method of  claim 28 , wherein only those request headers in said first request necessary to generate said response for said first request are parsed.  
     
     
       30. The method of  claim 16 , wherein said generating includes using cached information.  
     
     
       31. The method of  claim 16 , wherein said generating includes using said resource identifier to determine that information responsive to said first request is cached.  
     
     
       32. The method of  claim 31 , wherein said determining whether information responsive to said first request is cached includes using said resource identifier to access a hash table.  
     
     
       33. The method of  claim 31 , wherein said generating includes accessing a cached mapping of said resource identifier to a second identifier.  
     
     
       34. The method of  claim 33 , wherein said second identifier is indicative of a location of said first resource.  
     
     
       35. The method of  claim 31 , wherein said generating includes accessing cached debugging information associated with said first resource.  
     
     
       36. The method of  claim 31 , wherein said generating includes accessing cached directory listing information corresponding to said first resource.  
     
     
       37. The method of  claim 31 , wherein said generating includes accessing a cached body of said first resource.  
     
     
       38. The method of  claim 37 , wherein said generating includes dynamically generating headers corresponding to said first resource.  
     
     
       39. The method of  claim 31 , wherein said generating includes accessing cached headers corresponding to said first resource.  
     
     
       40. The method of  claim 39 , wherein said generating includes accessing a non- cached body of said first resource.    
     
     
       41. The method of  claim 16 , wherein said generating includes determining that information responsive to said first request for said first resource is not cached.  
     
     
       42. The method of  claim 41 , wherein said determining that information responsive to said first request is not cached includes using said resource identifier to access a hash table.  
     
     
       43. The method of  claim 41 , wherein said generating includes mapping said resource identifier to a second identifier.  
     
     
       44. The method of  claim 43 , wherein said second identifier is indicative of a location of said first resource.  
     
     
       45. The method of  claim 44 , further comprising caching said second identifier.  
     
     
       46. The method of  claim 41 , wherein said generating includes accessing debugging information associated with said first resource.  
     
     
       47. The method of  claim 46 , further comprising caching said debugging information.  
     
     
       48. The method of  claim 41 , wherein said generating includes accessing directory listing information corresponding to said first resource.  
     
     
       49. The method of  claim 48 , further comprising caching said directory listing information.  
     
     
       50. The method of  claim 41 , wherein said generating includes accessing a body of said first resource.  
     
     
       51. The method of  claim 50 , wherein said generating includes generating one or more response headers.  
     
     
       52. The method of  claim 50 , further comprising caching said body of said first resource.  
     
     
       53. The method of  claim 51 , further comprising caching one or more of said response headers.  
     
     
       54. The method of  claim 41 , further comprising caching information used in generating said response for said first request.  
     
     
       55. The method of  claim 41 , further comprising determining whether to cache information used in generating said response for said first request.  
     
     
       56. The method of  claim 55 , wherein said caching is performed according to a caching policy that is based at least in part on a file type of said first resource.  
     
     
       57. The method of  claim 55 , wherein said caching is performed according to a caching policy that is based at least in part of the size of said first resource.  
     
     
       58. An apparatus configured to generate responses for repeated resource requests, said apparatus comprising:
   a network interface configured to receive a first request for a first resource, said first request including a resource identifier and one or more parameters;        wherein said apparatus is configured to determine whether generating a response to said first request requires parsing said one or more parameters, and, if not, said apparatus is configured to generate said response to said first request without parsing said one or more parameters.      
     
     
       59. The apparatus of  claim 58 , wherein said first request is an HTTP request.  
     
     
       60. The apparatus of  claim 58 , wherein said first request corresponds to a request for an enhanced television resource.  
     
     
       61. The apparatus of  claim 58 , wherein said resource identifier is an URI.  
     
     
       62. The apparatus of  claim 58 , wherein said one or more parameters include one or more request headers.  
     
     
       63. The apparatus of  claim 58 , further comprising a cache, and wherein said apparatus is configured to determine whether information responsive to said first request is located in said cache.  
     
     
       64. The apparatus of  claim 63 , wherein said cache is configured to store a mapping of said resource identifier to a second identifier.  
     
     
       65. The apparatus of  claim 64 , wherein said second identifier is indicative of a location of said first resource.  
     
     
       66. The apparatus of  claim 64 , wherein said apparatus is a server, and wherein said second identifier is indicative of an internal name of said first resource on said server.  
     
     
       67. A server configured to concurrently execute a plurality of request handling processes, wherein each of said plurality of request handling processes is configured to receive requests for resources located on said server, each of said received requests including a resource identifier and one or more associated parameters;
   wherein each of said plurality of request handling processes is configured to determine whether generating responses for each of said received requests requires parsing said one or more associated parameters, and, if not, each of said plurality of request handling processes is configured to generate responses to said received requests without parsing said one or more associated parameters.      
     
     
       68. The server of  claim 67 , wherein each of said plurality of request handling processes has an independent address space including a cache.  
     
     
       69. The server of  claim 67 , wherein said received requests include an HTTP request.  
     
     
       70. The server of  claim 67 , wherein said received requests include a request for an enhanced television resource.  
     
     
       71. The server of  claim 67 , wherein said received requests include a resource identifier that is an URI.  
     
     
       72. The server of  claim 67 , wherein said received requests include one or more parameters that are request headers.  
     
     
       73. The server of  claim 67 , wherein each cache corresponding to said plurality of request handling processes is configured to store information responsive to received resource requests.  
     
     
       74. The server of  claim 73 , wherein said stored information includes mappings of first identifiers to secondary identifiers, wherein said first identifiers are included in said resource requests received by said server.  
     
     
       75. The server of  claim 74 , wherein said secondary identifiers are indicative of locations of resources on said server.  
     
     
       76. The server of  claim 67 , wherein said plurality of request handling processes share a common independent address space including a cache.  
     
     
       77. The server of  claim 76 , wherein said received requests include an HTTP request.  
     
     
       78. The server of  claim 76 , wherein said received requests include a request for an enhanced television resource.  
     
     
       79. The server of  claim 76 , wherein said received requests include a resource identifier that is an URI.  
     
     
       80. The server of  claim 76 , wherein said received requests include one or more parameters that are request headers.  
     
     
       81. The server of  claim 76 , wherein the cache is configured to store information responsive to received resource requests.  
     
     
       82. The server of  claim 81 , wherein said stored information includes mappings of first identifiers to secondary identifiers, wherein said first identifiers are included in said resource requests received by said server.  
     
     
       83. The server of  claim 82 , wherein said secondary identifiers are indicative of locations of resources on said server.  
     
     
       84. A computer program product comprising a non- transitory computer - readable medium having computer readable instructions encoded thereon, comprising:      computer program instructions configured to cause a computer to receive a first request for a first resource, said first request comprising a resource identifier and one or more parameters;        computer program instructions configured to cause a computer to determine whether generating a response for said first request requires parsing said one or more parameters; and        computer program instructions configured to cause a computer to generate said response without parsing said one or more parameters if generating said response does not require parsing said one or more parameters.      
     
     
       85. The computer program product of  claim 84 , wherein said first request is an HTTP request.  
     
     
       86. The computer program product of  claim 84 , wherein said first request is a request for an enhanced television resource.  
     
     
       87. The computer program product of  claim 84 , wherein said resource identifier is an URI.  
     
     
       88. The computer program product of  claim 84 , wherein said one or more parameters include request headers.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.