1. A method for preloading resources for an application on a client device, comprising: determining a resource list to preload onto the client device, wherein determining the list of resources, further comprises: determining a plurality of N-order Markov Chains based on a plurality of application hints associated with a previous execution of the application, wherein N is greater than 1; combining the plurality of N-order Markov Chains into a prediction graph based on at least one of Bayes' Theorem or a subsequence matching algorithm; and reducing the prediction graph to constrain a size of the prediction graph, the prediction graph being useable to generate the list of resources; and employing the resource list to preload at least one resource onto the client device before the application needs the at least one resource; receiving an application hint associated with the application; in response to the application hint, dynamically changing, by the client device, the resource list by, wherein dynamically changing the resource list comprises: adding within the list another resource to preload based on the application hint, the other resource to preload being added to the list at a location within the list based on a priority associated with the resource; and identifying which resource on the list should be loaded next into a memory local to the client device; and preloading the client device with the resources based on the changed resource list, wherein if the resources are located on a server device, then downloading the resources from the server device, and storing the downloaded resources locally on the client device, and obtaining the resources locally if the resources are stored on the client device, the application being configured to execute with a subset of the resources associated with the application.