In a computer network environment, a computer user can retrieve information from a local source, such as a local disk drive, or from a remote source such as a file on a remote server. While the user may locally store the files that the user wishes to interact with, it is common to store other files on a server. For example, where numerous users using different computers may need to sequentially access and read or modify a single file, such as in a collaborative workplace, such a file is typically located on a server that is accessible to the various multiple users.
Because a user, or the user's computer, most likely does not have precise and timely information regarding the contents of a particular directory, the user's computer typically requests that the directory be enumerated so that the computer may determine what is and is not stored in the directory of interest. For example, an “open” operation directed to a file in the directory will succeed only if the particular file exists in the specified directory.
There are many other situations where an application on a computer may make one or more calls to the server for directory information. For example, some applications trigger open or query-directory calls after each letter of a file name is entered. Thus, when the file name “cabbage” is typed into such an application for opening, seven separate open or query calls are sent to the server. The first is sent when the first “c” is typed in, the second when the first “a” is typed in and so forth with “b,” “b,” “a,” “g,” and “e.”
Excessive querying of the server for directory and/or file information wastes both communication medium bandwidth and server bandwidth. This in turn either decreases the speed with which networked machines are served or decreases the number of machines serviceable by the server. Accordingly, there is a need for a system that minimizes the number of calls to a server for such information, in order to save the resources of both the server and the communication medium.