A device comprising; a processor; memory coupled to the processor; non-transitory instructions embedded in the memory that when executed by the processor cause the device to perform a method, the method comprising; prior to receiving a request from a client device for information from a content distribution network, CDN, requesting the information from the CDN and storing the information in memory, wherein the information from the CDN is a master playlist or a media playlist; prior to receiving the request from the client device, requesting and receiving a media encryption key from a key server for each media playlist received from the CDN and storing the media encryption key of each media playlist received in the memory; and requesting, after receiving from the client device a master playlist request, and receiving a media segment from the CDN and storing the media segment in memory, wherein media segments for each media playlist in the master playlist that was requested by the client device are requested, whereby the device is configured to respond to the request from the client device for information from the CDN with the information stored in the memory prior to receiving the request, and whereby the device is configured to decrypt the media segments corresponding to each media playlist using the corresponding received media encryption key, wherein the master playlist provides a list containing the locations of a media presentation at different bitrates and/or in different formats, and wherein the media playlist provides a list containing the location of the media encryption keys and media segments of a media presentation at a particular format and/or bitrate. a processor; memory coupled to the processor; non-transitory instructions embedded in the memory that when executed by the processor cause the device to perform a method, the method comprising; prior to receiving a request from a client device for information from a content distribution network, CDN, requesting the information from the CDN and storing the information in memory, wherein the information from the CDN is a master playlist or a media playlist; prior to receiving the request from the client device, requesting and receiving a media encryption key from a key server for each media playlist received from the CDN and storing the media encryption key of each media playlist received in the memory; and requesting, after receiving from the client device a master playlist request, and receiving a media segment from the CDN and storing the media segment in memory, wherein media segments for each media playlist in the master playlist that was requested by the client device are requested, whereby the device is configured to respond to the request from the client device for information from the CDN with the information stored in the memory prior to receiving the request, and whereby the device is configured to decrypt the media segments corresponding to each media playlist using the corresponding received media encryption key, wherein the master playlist provides a list containing the locations of a media presentation at different bitrates and/or in different formats, and wherein the media playlist provides a list containing the location of the media encryption keys and media segments of a media presentation at a particular format and/or bitrate.