# Definition
A progressive download is similar in a lot of ways to a traditional download but with a couple major differences:
- A progressively downloaded audio file can be listened to while the file is being downloaded
- A progressive download does not have to be the whole file, a device can request smaller pieces of the overall file
When it comes to podcast analytics a progressive download is extremely important to how analytics are derived. Because a progressive download is theoretically a smaller piece of the entire file, there are additional pieces of information that can be gleaned from these types of requests.
This is how the IAB Tech Lab explains a progressive download:
3.2 These podcasts appear to be streamed, but the file is actually being downloaded while the listener is listening to the file. The downloaded file is stored in a temporary location rather than to a library as with a downloaded podcast. Since progressively downloaded files are typically downloaded the same way as the files stored for later listening, delivery for these two formats are recorded the same way in the server logs. The only difference between the two is whether the listener is actively playing the file as it is downloaded or being saved for later listening - which can only be discerned by the player.
Source: Podcast Measurement Technical Guidelines v.2.2
# Request Headers 1
The request format of a progressive download is similar to the format of a download, but with one minor change. When requesting a progressive download a range is passed. This range is represented in a range of bytes. The server will return the portion of the file that matches the range of bytes. For example, if I wanted to download the second half of a 30 mb (30,000,000 bytes) audio file, the range would be bytes=15000000-30000000
.
|
|
# Server Logs 2
The data tracked for a progressive download can be seen within the sc-bytes
, sc-content-len
, sc-range-end
, sc-range-start
and sc-status
properties below. The sc-range-start/end should match what was sent in the request header above and the sc-bytes/sc-content-len indicate the amount of content returned to the requesting device.
Property | Value |
---|---|
c-ip | 192.0.2.100 |
c-port | 11040 |
cs(Cookie) | - |
cs(Host) | d111111abcdef8.cloudfront.net |
cs(Referer) | - |
cs(User-Agent) | Podcasts/4023.540.3 CFNetwork/1494.0.7 Darwin/23.4.0 |
cs-bytes | 23 |
cs-method | GET |
cs-protocol | https |
cs-protocol-version | HTTP/2.0 |
cs-uri-query | - |
cs-uri-stem | /audiohost.com |
date | 2019-12-04 |
fle-encrypted-fields | - |
fle-status | - |
👉 sc-bytes | 15000000 |
👉 sc-content-len | 15000000 |
sc-content-type | audio/mpeg |
👉 sc-range-end | 30000000 |
👉 sc-range-start | 15000000 |
👉 sc-status | 206 |
ssl-cipher | ECDHE-RSA-AES128-GCM-SHA256 |
ssl-protocol | TLSv1.2 |
time | 21:02:31 |
time-taken | 0.001 |
time-to-first-byte | 0.001 |
x-edge-detailed-result-type | Hit |
x-edge-location | LAX1 |
x-edge-request-id | SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ== |
x-edge-response-result-type | Hit |
x-edge-result-type | Hit |
x-forwarded-for | - |
x-host-header | audiohost.com |