Hi there,

I've recently noticed in my apache's log files that the "TeamSpeak3-ImageFetcher-1.0" is a quite activ guest to my server. The reason is of course that my apache is hosting all those nice images which my TeamSpeak3 server uses and which are therefor loaded from that web server.

But, I noticed a lot of HTTP 200 answers and not a single HTTP 304 answers to the "TeamSpeak3-ImageFetcher-1.0". In the next step I checked the network traffic between one of the TeamSpeak3 clients and the apache server.

Here is what I found...

Client request for first image:
GET /pict/wdw_bb_ally.jpg HTTP/1.1
Cache-Control: no-cache
Pragma: no-cache
User-Agent: TeamSpeak3-ImageFetcher-1.0
Connection: Keep-Alive
Accept-Encoding: gzip
Accept-Language: de-DE,en,*
Host: www.somedomain.de


Server response for first image:
HTTP/1.1 200 OK
Date: Wed, 15 Feb 2012 06:51:41 GMT
Server: Apache
Last-Modified: Wed, 26 Oct 2011 16:25:41 GMT
ETag: "1af487df-3eb0-4b0361b626b40"
Accept-Ranges: bytes
Content-Length: 16048
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: image/jpeg


Up until now all is fine, at the first connect of the client a unconditional HTTP GET is okay. But there after it looks the same! The TeamSpeak3 client keeps making unconditional HTTP GET resulting in a transfer of the whole image across the network.

My suggesstion, make conditional HTTP GET like this.

client:
GET /pict/wdw_bb_ally.jpg HTTP/1.1
If-Modified-Since: Wed, 15 Feb 2012 06:51:41 GMT
If-None-Match: “1af487df-3eb0-4b0361b626b40″
User-Agent: TeamSpeak3-ImageFetcher-1.0
Connection: Keep-Alive
Accept-Encoding: gzip
Accept-Language: de-DE,en,*
Host: www.somedomain.de


Now the server would respond with:
HTTP/1.x 304 Not Modified
Date: Wed, 15 Feb 2012 06:55:21 GMT
Server: Apache
Last-Modified: Wed, 26 Oct 2011 16:25:41 GMT
ETag: "1af487df-3eb0-4b0361b626b40"
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive


In that case no image would be send over the network. The HTTP GET would simply be answered by a HTTP 304 (not modified) header. It would save time and bandwidth for both the client and the server.

I hope you might consider implementing such a feature in a future TeamSpeak3 client.

Thanks,
Barungar