1. A method, performed by a data compression device, for compression of a communications data stream, wherein the communications data stream comprises a streaming sequence of data blocks and each data block comprises a sequence of data bytes, the method comprising: receiving a one data block of the streaming sequence of data blocks to be compressed; generating a fingerprint for each data byte of the one data block based on a sliding fingerprint window, wherein the sliding fingerprint window is of a length of a number of data bytes that is less than a length of the one data block; selecting a fingerprint subset comprising a subset of the generated fingerprints; comparing each fingerprint of the fingerprint subset to prior fingerprints stored in a fingerprint cache, wherein each of the prior fingerprints was generated from a respective sequence of data bytes of one or more previously received data blocks of the streaming sequence of data blocks stored in a byte cache, wherein the respective sequence of data bytes is of a length that matches the length of the sliding fingerprint window; determining that a one fingerprint of the fingerprint subset matches a one of the prior fingerprints; comparing the data bytes from which the one fingerprint was generated to the data bytes of the one or more previously received data blocks from which the matching one of the prior fingerprints was generated; determining that the data bytes from which the one fingerprint was generated matches the data bytes from which the matching one of the prior fingerprints was generated; and within the one data block, replacing the data bytes from which the one fingerprint was generated with a match descriptor, wherein the match descriptor indicates a location within the byte cache that stores the matching data bytes from which the matching one of the prior fingerprints was generated.