A method of operating a cache node (111 - 113, 313, 900) that caches content for delivery to end user devices (111-113, 130 - 132, 331), the method comprising: receiving a content request comprising a URL corresponding to a web page from an end user device; identifying an original HTML file corresponding to the requested web page, wherein the original HTML file comprises an HTML file body; identifying a sub-resource that is required for rendering the requested web page wherein a reference to the sub-resource is contained in the HTML file body; requesting the identified sub-resource from a sub-resource source prior to receiving a request from the end user device (130 - 132, 331) for the identified sub-resource; receiving the identified sub-resource from the sub-resource source; and sending the identified sub-resource to the end user device (130 - 132, 331); characterised in that the method further includes: moving the reference to the identified sub-resource to a higher position in the HTML file body to generate an edited HTML file; sending the edited HTML file to the end user device (130 - 132, 331); and wherein identifying the sub-resource comprises consulting a repository within the cache node, wherein the repository maintains a URL-based listing of sub-resources and stores a list of sub-resource locations indexed using URL's, and that contain sub-resources that have been historically requested for the particular URL by multiple, different end users over time: receiving a content request comprising a URL corresponding to a web page from an end user device; identifying an original HTML file corresponding to the requested web page, wherein the original HTML file comprises an HTML file body; identifying a sub-resource that is required for rendering the requested web page wherein a reference to the sub-resource is contained in the HTML file body; requesting the identified sub-resource from a sub-resource source prior to receiving a request from the end user device (130 - 132, 331) for the identified sub-resource; receiving the identified sub-resource from the sub-resource source; and sending the identified sub-resource to the end user device (130 - 132, 331); characterised in that the method further includes: moving the reference to the identified sub-resource to a higher position in the HTML file body to generate an edited HTML file; sending the edited HTML file to the end user device (130 - 132, 331); and wherein identifying the sub-resource comprises consulting a repository within the cache node, wherein the repository maintains a URL-based listing of sub-resources and stores a list of sub-resource locations indexed using URL's, and that contain sub-resources that have been historically requested for the particular URL by multiple, different end users over time: moving the reference to the identified sub-resource to a higher position in the HTML file body to generate an edited HTML file; sending the edited HTML file to the end user device (130 - 132, 331); and wherein identifying the sub-resource comprises consulting a repository within the cache node, wherein the repository maintains a URL-based listing of sub-resources and stores a list of sub-resource locations indexed using URL's, and that contain sub-resources that have been historically requested for the particular URL by multiple, different end users over time: