The invention relates to a directory proxy caching system that is
constructed based on a predicate, i.e., a query from a client. Broadly
stated, the predicate is formed by the query (request) issued by the
client. Once the data is found in the directory, then the data is stored
in a cache of a proxy server. The data is indexed in the proxy server by
the predicate. The predicate is used to form an index by sorting the
predicate into a normal form. Steps in sorting the predicate into the
normal form include the following. Each symbol of the predicate is
represented by a numerical representation, for example the ASCII value
used to represent the symbol in ordinary text files. The predicate is
expressed as a plurality of primitive predicates, and individual
predicates of the plurality of primitive predicates are joined by logical
connectors. The logical connectors, and each term in the primitive
predicates are represented by numbers. The logical connectors and the
predicates are sorted in numerical order of the numbers to form the
normal form of the predicate. The information retrieved by the predicate
is stored into a cache using the normal form of the predicate as an
index. The next request using a previously used predicate can then be
found in the cache by the next request being sorted into normal form and
used as an index into the cache.