---
title: "Important Recommendations"
slug: "important-recommendations"
updated: 2026-03-23T15:56:21Z
published: 2026-03-23T15:56:21Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://help.tritondigital.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Important Recommendations

## Player Recommendations

#### Full/Progressive Downloads

For a full download, ask for the entire file in one go. For a progressive download, ask for the file in slices (byte range). This way a full download can be distinguished from a progressive download.

Use header information - located at the start of the podcast - to prevent a full download when not needed.

#### Automatic Unsubscribe

Employ an “automatic download unsubscribe” behavior (e.g. -stop auto downloads after 5episodes of non-listens).

#### Avoid Automatic Back-Catalog Downloads

Do not automatically download all episodes (e.g. back catalog episodes) by default. This creates unnecessary drain on the publishers’ servers and consumes users’ bandwidth.

#### User Agent Structure

Implement the recommendations for **user agent structure** as found in the IAB Tech Lab *Podcast Measurement Technical Guidelines v.2.2*, [in section 7.2, "Agent Structure"](https://iabtechlab.com/wp-content/uploads/2024/02/PodcastMeasurement_v2.2_final.pdf).

#### Autoplay

Flag that indicates if the session has been initiated from a player auto-play. Possible values are**autoplay=0**(not initiated via auto-play) and**autoplay=1**(initiated via auto-play). Auto-play of audio content is strongly discouraged since in some cases, auto-played streams are not audible as the volume may be muted while the stream continues to be active. Triton Digital recommends that any initiation of audio content playback is determined by an overt user gesture, such as a tap or a click.

#### Pre-load/Pre-fetch

**Pre-fetching of audio content is strongly discouraged**. In most situations, the audio stream will not be heard by the listener and therefore should not be counted as a valid session. The best way to avoid measurement issues with pre-fetching is to simply **not use it**. The recommendations outlined below should work to eliminate the problem.

- **Preferred**: the**<audio>**element’s**preload**attribute should be set to**none**. It should never be set to**auto**or left**blank**, as those options transfer the decision to the browser itself. *See the Code Example, below*.
- **Alternatively**, the**<audio>**element’s**preload**attribute includes the**metadata**option, which fetches/pre-loads only the audio metadata. *This might not cause a problem*. However, if you choose to use**preload="metadata"**instead of**preload="none"**you should thoroughly test the player on multiple platforms and browsers to be sure it’s really needed and behaves as expected.

##### Pre-load/Pre-fetch Code Examples

**Click to expand the code examples**

##### Code Example1: Stopping the Audio

The example code below stops the audio and uses a workaround for the Safari browser "pause" issue.

```actionscript
stop: function () {
                    var context = this;
                    if ( fsm.is( STATE.STOPPED ) ) return;

                    this.audioNode = getAudioNode.call( this );

                    fsm.stop();

                    this.audioNode.pause();
                    if( OsPlatform.name !== 'Safari' || this.audioNode.src.indexOf('m3u8') > -1 || this.useHlsLibrary) {
                    setTimeout(function(){
                    context.audioNode.src = '';
                    context.url = null;
                    context.resetAudioNode();
                    }, 300);
                    }else{
                    setTimeout(function(){
                    context.url = null;
                    context.resetAudioNode();
                    }, 300);
                    }

                    if( OsPlatform.os.family === 'iOS' && OsPlatform.name === 'Chrome Mobile') {
                    window.stop();
                    }

                    if ( this.useHlsLibrary ) {
                    this.hls.detachMedia();
                    this.hls.stopLoad();
                    this.hls.destroy();
                    }

                    },
```

##### Example 2: Reloading the page

The example code below shows the use of **preload="none"** and the reloading of the page containing the player.

**<audio controls preload="none" height="32" width="300" onpause="location.reload();" src="<PLAYER PAGE URL>" type="audio/mpeg" />**

**Code notes:**

- Replace "**<PLAYER PAGE URL>**" with the actual URL to your player page.
- The**height**and**width**attributes shown are just examples; use the actual height and width of your player.

##### Example 3: Using a known valid audio file

The example code below shows the use of**preload="none"** and the loading of a short MP3 file (*a known valid audio file*) to stop the background file download.

  

```actionscript
<audio controls preload="none" height="32" width="300" onplay="startAudio();" onpause="stopAudio();"
                    src="http://download.andomedia.com/Creative/208/0/2080711_1.mp3" type="audio/mpeg" />
                    <script>
                    // -- Set audio source before playing in case the pause/stop button has cleared it
                    function startAudio()
                    {
                    var audio = document.getElementsByTagName("audio")[0];
                    if (audio.src!="http://<YOUR-AUDIO-STREAM>")
                    {
                    audio.src="<YOUR-AUDIO-STREAM>";
                    if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1){ audio.load(); }
                    audio.play();
                    }
                    }
                    // -- Clear the audio source - this should stop the download. Pausing alone will not.
                    function stopAudio()
                    {
                    var audio = document.getElementsByTagName("audio")[0];
                    audio.src="http://download.andomedia.com/Creative/208/0/2080711_1.mp3";
                    if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1){ audio.load(); }
                    }
                    </script>

                
```

**Code notes:**

- Replace "**http://<YOUR-AUDIO-STREAM>**" with the actual URL to your audio stream.
- **audio.src="http://download.andomedia.com/Creative/208/0/2080711_1.mp3"** is a live three-second silent audio file hosted by Triton Digital that you can use while testing. If you choose to use this method after testing, please replace this URL with a link to your own silent audio file. *The Triton Digital file could be renamed or removed at any time without notice*.

## Host, Directory, and Server Recommendations

#### ID3 Headers

Podcast MP3 files should use **ID3v2 tags** so that the headers are located at the start of the podcast. This allows players to use the ID3 data before streaming begins and without downloading the full podcast file.

The recommended ID3 tag size is **under 300kb** with an art size of **800x800 pixels**.

#### Do Not Cache Episodes

Do not cache podcast episodes on your servers. Always download the latest episode from the enclosure URL for every app user wanting to listen.

#### Use GUID

Use the GUID – as opposed to episode URL, title, publication date, etc. – to identify new episodes in the RSS feed that should be automatically downloaded to a user's device. The GUID is designed to be persistent through changes to hosting environment, titles, etc.
