A method of streaming interactive computer graphics from a server to a client device, including: a) initialising a hash key collection for the client device at the server by the server receiving a client profile from the client device specifying graphics capabilities and requested resolution of the client device and the server receiving the hash key collection from the client device, wherein each hash key within the hash key collection identifies a blob of data cached locally at the client device; b) executing an application on the server which generates a stream of Graphical Processing Unit, GPU, graphics commands and GPU graphics resources, wherein the GPU graphics resources include texture resources and vertex resources; c) a proxy, executing at the server, intercepting the GPU graphics commands and GPU graphics resources generated from the application; d) processing the GPU graphics resources to generate reduced graphics resources at the server; e) generating a hash key for the reduced graphics resources at the server; f) transmitting the lossless entropy encoded GPU graphics commands from the server to the client device; g) the server determining whether the hash key is within the hash key collection for the client device; h) the server synchronising the reduced graphics resources to the client device from the server and adding the hash key to the hash key collection where the hash key is not in the hash key collection i) the server transmitting the hash key to the client device; j) retrieving graphics resources stored at the client device utilizing the transmitted hash key; and k) at a graphical processing unit at the client device rendering computer graphics using the transmitted graphics commands and the retrieved graphics resources. a) initialising a hash key collection for the client device at the server by the server receiving a client profile from the client device specifying graphics capabilities and requested resolution of the client device and the server receiving the hash key collection from the client device, wherein each hash key within the hash key collection identifies a blob of data cached locally at the client device; b) executing an application on the server which generates a stream of Graphical Processing Unit, GPU, graphics commands and GPU graphics resources, wherein the GPU graphics resources include texture resources and vertex resources; c) a proxy, executing at the server, intercepting the GPU graphics commands and GPU graphics resources generated from the application; d) processing the GPU graphics resources to generate reduced graphics resources at the server; e) generating a hash key for the reduced graphics resources at the server; f) transmitting the lossless entropy encoded GPU graphics commands from the server to the client device; g) the server determining whether the hash key is within the hash key collection for the client device; h) the server synchronising the reduced graphics resources to the client device from the server and adding the hash key to the hash key collection where the hash key is not in the hash key collection i) the server transmitting the hash key to the client device; j) retrieving graphics resources stored at the client device utilizing the transmitted hash key; and k) at a graphical processing unit at the client device rendering computer graphics using the transmitted graphics commands and the retrieved graphics resources.