Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Verwalten des Ablaufs von BLOB-Inhalt

Letzte Aktualisierung: März 2011

Der Wert des Zwischenspeicherns von Blobs im Windows Azure-CDN wird realisiert, wenn der Inhalt aus dem CDN-Edge-Cache übermittelt wird. Daher ergibt sich für während der Gültigkeitsdauer des Blobs nur einmal angeforderten Inhalt keine Leistungsverbesserungen aus dem Edge-Zwischenspeichern. Die Blobs, auf die während ihrer Gültigkeitsdauer häufig zugegriffen wird, profitieren am meisten vom Zwischenspeichern.

Die Gültigkeitsdauer gibt an, dass das Blob für diese Zeitdauer im CDN zwischengespeichert werden sollte, bevor es vom BLOB-Dienst aktualisiert wird. Das CDN versucht nur dann, das Blob vom BLOB-Dienst zu aktualisieren, wenn die Gültigkeitsdauer abgelaufen ist.

Sie haben zwei Möglichkeiten, zu steuern, wie häufig zwischengespeicherter Blob-Inhalt aktualisiert wird:

  1. Sie können die x-ms-blob-cache-control-Eigenschaft explizit auf eine Put Blob-Anforderung, Put Block List-Anforderung oder Set Blob Properties-Anforderung festlegen oder mithilfe der verwalteten Windows Azure-Bibliothek die BlobProperties.CacheControl-Eigenschaft festlegen. Durch das Festlegen dieser Eigenschaft wird der Wert des Cache-Control-Headers für das Blob festgelegt. Der Wert des Headers oder der Eigenschaft sollte den entsprechenden Wert in Sekunden angeben. Zum Festlegen des maximalen Zwischenspeicherzeitraums auf ein Jahr können Sie z. B. den Anforderungsheader als x-ms-blob-cache-control: public, max-age=31556926 angeben. Details zum Festlegen von Headern für das Zwischenspeichern finden Sie in der HTTP/1.1-Spezifikation.

  2. Sie können die Standardheuristik des Cachenetzwerks nutzen, statt explizit einen Zwischenspeicherwert festzulegen. Standardmäßig bestimmt das CDN die Aktualität durch Ableitung von einem Verhältniswert auf Grundlage der Uhrzeit der letzten Änderung des zwischengespeicherten Blobs, also der Uhrzeit der letzten Änderung des Blobs im Moment der Zwischenspeicherung. Je länger der Zeitraum ist, während dem der Inhalt des Blobs am Ursprung nicht geändert wurde, desto länger speichert das CDN das Blob zwischen, ohne den Ursprung auf Inhaltsupdates zu überprüfen. Die Annahme ist, dass ein für einen längeren Zeitraum nicht geändertes Blob wahrscheinlich für ein längeres Intervall unverändert bleibt als ein Blob, das vor kürzerer Zeit geändert wurde.

    Gegenwärtig wird die Aktualität eines Blobs als 20 % des Intervalls zwischen der aktuellen Zeit und der Uhrzeit der letzten Änderung berechnet, bis zu einem maximalen Intervall von 72 Stunden. Ein Blob, dessen Zeitpunkt der letzten Änderung vor 30 Minuten war, wird z. B. im CDN-Cache sechs Minuten lang als aktuell betrachtet. Nachdem das Blob sechs Minuten lang zwischengespeichert wurde, überprüft das CDN bei der nächsten Anforderung des zwischengespeicherten Blob das Blob am Ursprung mit einer bedingten Anforderung, um das Blob erneut zwischenzuspeichern, wenn es seit dem letzten Zwischenspeichern geändert wurde.

    Falls 20 % des Intervalls zwischen der aktuellen Zeit und der Uhrzeit der letzten Änderung größer als das maximale Intervall von 72 Stunden sind, überprüft das CDN nach Ablauf von 72 Stunden das Blob am Ursprung mit einer bedingten Anforderung beim nächsten Zugriff auf das Blob. Wenn z. B. die letzte Änderung eines Blobs vor 30 Tagen erfolgte, markiert das CDN das Blob für eine Aktualitätsprüfung beim nächstem Zugriff nach 72 Stunden und nicht nach 6 Tagen (wie ein Intervall von 20 % vorgeben würde, falls es keinen Maximalwert gäbe).

    Beachten Sie, dass die Standardheuristik nur in dem Fall, wenn der Zwischenspeicherzeitraum nicht explizit mit der x-ms-blob-cache-control-Eigenschaft oder der BlobProperties.CacheControl-Eigenschaft angegeben wurde, gültig ist.

noteHinweis
Die hier beschriebene Aktualitätsberechnung stellt keine Garantie dazu bereit, wann ein bestimmtes zwischengespeichertes Blob aktualisiert wird. Die hier beschriebene Aktualitätsberechnung und das maximale Intervall unterliegen möglicherweise künftigen Änderungen durch Windows Azure.

Jeder Inhalt, den Sie über das CDN zwischenspeichern möchten, muss im Windows Azure-Speicherkonto als öffentlich verfügbares Blob gespeichert werden. Weitere Details zum Windows Azure-BLOB-Dienst finden Sie unter Blob Service Concepts.

Es gibt verschiedene Methoden, um im BLOB-Dienst mit Inhalt zu arbeiten:

Das folgende Codebeispiel ist eine Konsolenanwendung, die mithilfe der verwalteten Windows Azure-Bibliothek einen Container erstellt, seine Berechtigungen für den öffentlichen Zugriff festgelegt und ein Blob innerhalb des Containers erstellt. Sie gibt durch Festlegen des Cache-Control-Headers für das Blob auch explizit ein gewünschtes Aktualisierungsintervall an. Dieser Schritt ist optional – Sie können auch die in Übersicht über das Windows Azure CDN beschriebene Standardheuristik nutzen.

Falls Sie das CDN wie oben dargestellt aktiviert haben, wird das erstellte Blob vom CDN zwischengespeichert. Geben Sie Ihre Kontoanmeldeinformationen mit Ihrem eigenen Speicherkonto und der Tastenkombination an:

using System;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;

namespace BlobsInCDN
{
    class Program
    {
        static void Main(string[] args)
        {
            //Specify storage credentials.
            StorageCredentialsAccountAndKey credentials = new StorageCredentialsAccountAndKey("storagesample",
                "m4AHAkXjfhlt2rE2BN/hcUR4U2lkGdCmj2/1ISutZKl+OqlrZN98Mhzq/U2AHYJT992tLmrkFW+mQgw9loIVCg==");
            
            //Create a reference to your storage account, passing in your credentials.
            CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);
            
            //Create a new client object, which will provide access to Blob service resources.
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

            //Create a new container.
            CloudBlobContainer container = blobClient.GetContainerReference("cdncontent");
            container.CreateIfNotExist();

            //Specify that the container is publicly accessible.
            BlobContainerPermissions containerAccess = new BlobContainerPermissions();
            containerAccess.PublicAccess = BlobContainerPublicAccessType.Container;
            container.SetPermissions(containerAccess);

            //Create a new blob and write some text to it.
            CloudBlob blob = blobClient.GetBlobReference("cdncontent/testblob.txt");
            blob.UploadText("This is a test blob.");

            //Set the Cache-Control header on the blob to specify your desired refresh interval.
            blob.SetCacheControl("public, max-age=31536000");
        }
    }

    public static class BlobExtensions
    {
        //A convenience method to set the Cache-Control header.
        public static void SetCacheControl(this CloudBlob blob, string value)
        {
            blob.Properties.CacheControl = value;
            blob.SetProperties();
        }
    }
}

Überprüfen Sie, ob das Blob über die CDN-spezifische URL verfügbar ist. Für das oben angezeigte Blob würde die URL der folgenden ähneln:

http://az1234.vo.msecnd.net/cdncontent/testblob.txt

Wenn erforderlich, können Sie mit einem Tool wie wget oder Fiddler die Anforderungs- und Antwortdetails untersuchen.

Siehe auch

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

© 2013 Microsoft. Alle Rechte vorbehalten.
facebook page visit twitter rss feed newsletter