1. A method for processing a data request in a caching system, comprising: receiving a data request; selecting from at least one operational mode based on the data request and a predefined selection algorithm, wherein at least one of the at least one operational mode is a programmable mode; receiving at least one parameter for the programmable mode; modifying caching logic of the programmable mode based on the at least one parameter received; processing the data request based on the selected operational mode; returning a response to a sender; monitoring the selecting activity; analyzing the selecting activity; and dynamically updating the predefined selection algorithm based on the analysis.