I have clients accessing Azure storage on a high latency connection, and it appears that the main reason for the slowness is the latency between each call.
The following happens several hundred times per user
Get flat directory listing Get the pages of the blobs that are listed Request the data in the pages The application is taking advantage of the "sparse" nature of the PageBlob, and the small allocation units of 512 bytes, but that has a side effect of creating too many transactions.
Can I batch together several "Get Page Range" or "Get Pa开发者_StackOverflow中文版ge Blob" requests for objects with different names, like this in the same HTTP request:
GET /containerName/Hourly/2012/01/01/02
GET /containerName/Hourly/2012/01/01/03
GET /containerName/Hourly/2012/01/01/04
GET /containerName/Hourly/2012/01/01/05
or the same question goes for similar operations with PUT
You could place your own service between you and azure storage, then you could combine several things in a single operation. However, this may not be a good idea.
It may be better to leave the calls as separate operations, but do them asynchronously and in parallel.
Have a look at this link for an example: http://blogs.msdn.com/b/kwill/archive/2011/05/30/asynchronous-parallel-block-blob-transfers-with-progress-change-notification.aspx
精彩评论