Bandbreedte-optimalisatie met behulp van de ETag-header
Wanneer je een feed hebt die minder vaak verandert dan dat het project gepland is, zou het opnieuw downloaden van de volledige feed bij elke run een verspilling zijn. Het zou jouw Channable project onnodig kunnen vertragen en kunnen leiden tot onnodige uitgaande data kosten bij jouw hostingprovider.
Om onnodige downloads te voorkomen, kan je de bandbreedte-optimalisatie voor http en https-imports inschakelen. Wanneer deze instelling is ingeschakeld, controleren we nog steeds het importbestand bij elke run, maar als jouw server aangeeft dat het bestand niet is veranderd sinds de vorige download, dan zullen we het niet opnieuw downloaden.
Technische details
Wanneer de bandbreedte-optimalisatie is ingeschakeld, slaan we tijdens een download de waarde van de ETag http header op, als jouw server deze in het antwoord opneemt. Bij de volgende run voegen we een If-None-Match http header toe aan ons verzoek, die de eerder geobserveerde ETag-waarde bevat. Als jouw server vervolgens reageert met de http-statuscode "304 Not Modified", dan weten we dat het bestand niet is veranderd.
Dit betekent dat jouw server twee dingen moet doen om de bandbreedte te optimaliseren:
- Het moet een ETag header in zijn reactie (response) opnemen
- Het moet de If-None-Match verzoek (request) header respecteren...
Veelgebruikte servers zoals Apache, Nginx en Amazon S3 ondersteunen dit out of the box, zodat je geen speciale zorg hoeft te besteden aan het optimaliseren van de bandbreedte.
Als de server geen ETag header bevat, of als het nooit een "304 Not Modified" response geeft, dan heeft de bandbreedte-optimalisatie geen effect, en zullen we het hele bestand bij elke run downloaden.
Vraag en antwoord
Hoe weet ik of bandbreedte-optimalisatie effectief is?
Wanneer we een bestand proberen te importeren, maar het is niet veranderd sinds de laatste import, kan je dit zien in de statusupdates van die specifieke import:
Kunnen gegevens in Channable verouderd raken als de bandbreedte-optimalisatie wordt ingeschakeld?
Nee, er is geen risico op verouderde gegevens, als jouw server zich goed gedraagt. Channable zal steeds blijven controleren of er nieuwe data beschikbaar is bij elke geplande run. Dit geldt ook voor elke keer dat jij op "uitvoeren" klikt op de import wanneer de bandbreedte-optimalisatie is ingeschakeld.
Is er een nadeel aan het inschakelen van bandbreedte-optimalisatie?
Nee, als jouw server zich goed gedraagt, is het altijd veilig om de bandbreedte-optimalisatie in te schakelen. Als jouw server de functies die nodig zijn om de bandbreedte te optimaliseren niet ondersteunt, zal de optimalisatie niet effectief zijn, maar het zal niet schadelijk zijn.
Wanneer moet ik de bandbreedte-optimalisatie uitschakelen?
Als jouw server verkeerd geconfigureerd is, of als de server een bug bevat, kan hij reageren met een "304 Not Modified"-reactie, zelfs als jouw feed in feite is veranderd. De meest voorkomende fout is een server die een constante ETag-waarde stuurt, die niet verandert, zelfs wanneer de feed wel verandert. In dit geval zouden de gegevens in Channable verouderd worden. Als je niet in staat bent om dit op jouw server op te lossen, kan je het beste de bandbreedte-optimalisatie in Channable uitschakelen.
Voorkomt bandbreedte-optimalisatie alle onnodige downloads?
Wij downloaden jouw feed nog steeds één keer per 10 dagen, zelfs als jouw server aangeeft dat de feed niet is veranderd. Voor bestanden die minder vaak veranderen, betekent dit dat we af en toe het hele bestand downloaden, maar de bandbreedte-optimalisatie functie bespaart dan nog steeds minstens 90% van jouw bandbreedte.