Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

I have a Media Web Part on a page that displays video using Silverlight™. When I enable the BLOb Cache and enable it for the file extension my video file has, the video stops working and just says "Loading, please wait". If I disable the BLOb Cache or disable it for the particular file extension, it starts working again. I'm using Windows 7 on the client side.

Here's what I've concluded so far:

  • The problem exists in all browsers
  • The problem is not related to the max-age or to client-side caching: the problem exists whether or not the video file is actually downloaded from the server
  • When the BLOb Cache is enabled, the video is served using GZip encoding (otherwise uncompressed)
  • When the BLOb Cache is enabled, the video is served using chunked HTTP encoding (otherwise normal encoding)
  • The video file is served to the browser correctly when the BLOb Cache is enabled (verified using Fiddler)

Here are my theories so far:

  • This is a bug in Silverlight (relating to either GZip content encoding or chunked HTTP encoding)
  • This is a bug in Windows 7 (relating to what, I don't know)
  • This is a bug in SharePoint (not likely, since the video file is actually served to the browser)
  • This is a bug in the Silverlight part of the Media Web Part (relating to either GZip content encoding or chunked HTTP encoding)
  • The BLOb Cache actually doesn't support video (and this is not documented anywhere)

I'd like to know firstly whether this is reproducable by y'all, and secondly whether anyone has a theory or a citation on why it isn't working or whether there is a way to fix it. Currently, the "fix" is to disable the BLOb Cache for all video file extensions.

share|improve this question

2 Answers 2

Don't forget that the blob cache also sets the max-age (default 1 day I think). You can set max-age to some small value in web.config to make sure that some front-end caching isn't confusing the issue.

share|improve this answer
    
Front-end caching is verified not to confuse the issue. Thanks, I'll update the question. –  ScarePoint Apr 21 '11 at 8:57

I had a similar problem to what you're reporting and first assumed that this was a Silverlight problem in its inability to handle GZIP compressed streams.

However, what I have determined is that the answer is partially a "yes". Silverlight cannot handle GZIP streams even though it sends an HTTP request indicating that it does in fact support GZIP responses.

However, that was not the root cause of the problem. BLOB Caching relies on the Server's IIS mime types to set the Content-Type value of the HTTP result. After examining response headers from the requests, I found that BLOB Caching was returning a type of text/html for mp4 files vs. application/octet-stream.

But again, this alone was not the full story. We also use a Big-IP F5 load balancer that has been configured along with the best practices from Microsoft which includes compression. However, the compression configuration is based only on certain mime types, which include text/html but does not include application/*.

So... The F5 was compressing the stream, NOT IIS from the BLOB Cache. This was causing the Silverlight failure.

The solution: Simply add the mp4 extension along with the correct Mime Type to the IIS Server's Mime Types. Note, adding it to the SharePoint site's Mime Types will not work, the BLOB Cache system does not use the per-site mime types.

If you're not using a load balancer or proxy and you suspect that IIS is compressing the content from the BLOB Cache system directly, you should review your IIS settings and see if something is forcing compression. It might be resolved as well by setting the mp4 mime type (or whatever the missing mime type is).

Good luck to you!

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.