An client-side performance optimization system for streamed applications provides
several approaches for fulfilling client-side application code and data file requests
for streamed applications. A streaming file system or file driver is installed
on the client system that receives and fulfills application code and data requests
from a persistent cache or the streaming application server. The client or the
server can initiate the prefetching of application code and data to improve interactive
application performance. A client-to-client communication mechanism allows local
application customization to travel from one client machine to another without
involving server communication. Applications are patched or upgraded via a change
in the root directory for that application. The client can be notified of application
upgrades by the server which can be marked as mandatory, in which case the client
will force the application to be upgraded. The server broadcasts an application
program's code and data and any client that is interested in that particular application
program stores the broadcasted code and data for later use.