1

Using local storage with BLOB storage を実装しようとしています。http://allcomputers.us/windows_azure/using-local-storage-with-blob-storage-(part-1)---using-a-local-cache---defining-and-accessing-localを調べました-storage.aspx を実行し、GetBlob メソッドを以下のようにリファクタリングしました。

public Stream GetBlob(string blobAddress, string CONTAINER_NAME)
    {
        MemoryStream stream = null;
        stream = CheckInLocalCache(blobAddress);
        if (stream==null)
        {
            CloudBlobContainer container = Client.GetContainerReference(CONTAINER_NAME);
            if (container != null)
            {
                stream = new MemoryStream();
                container.GetBlobReference(blobAddress).DownloadToStream(stream);
            }
        }

        return stream;
    }

    private static MemoryStream CheckInLocalCache(string blobAddress)
    {
        MemoryStream localBlobStream=null;
        LocalResource localBlobCache = RoleEnvironment.GetLocalResource("localBlobCache");
        if (localBlobCache != null)
        {
            string localCacheRootDirectory = localBlobCache.RootPath;
            string blobName = blobAddress.Split('/')[blobAddress.Split('/').Length - 1];
            if (File.Exists(localBlobCache.RootPath + blobName))
            {
                localBlobStream = new MemoryStream(File.ReadAllBytes(localBlobCache.RootPath + blobName));
            }               
        }
        return localBlobStream;
    }

構成ファイルにこれを追加しました

<WebRole name="ServiceRuntimeWebsite">
   <LocalResources>
      <LocalStorage name="localBlobCache"
                    cleanOnRoleRecycle="true"
                    sizeInMB="100" />
   </LocalResources>
</WebRole>

開発環境でプロジェクトを実行すると、フォルダー「localBlobCache」が作成されていることがわかります。しかし、Azure から BLOB を何度も読み込んだ後でも、ローカル ストレージに実際に読み込まれることはありませんでした。誰が何が間違っているのか教えてもらえますか?

4

1 に答える 1

0

共有したコードでは、ファイルがキャッシュ ディレクトリに保存されるようには見えません。BLOB がまだ存在しない場合に、BLOB をファイルに保存する何かがおそらく GetBlob に必要です。

于 2011-09-23T09:30:34.830 に答える