2017-02-27 3 views
-2

Ich muss alle meine Bilder in meiner Website, die AKAMAI CDN verwendet, löschen. Ich habe den Code zum Löschen einer Datei geschrieben. PFB der Code für das Löschen einzelner Dateien. Aber meine Anforderung ist, alle Dateien auf der Website zu löschen. Kann jemand vorschlagen, wie man das erreicht.Akamai CDN Löschen aller Dateien auf der Website

Dank

// // © 2016 Worldventures. Alle Rechte vorbehalten. //

using Akamai.EdgeGrid.Auth; 
using Akamai.Utils; 
using CMS; 
using CMS.DataEngine; 
using CMS.DocumentEngine; 
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Net; 
using System.Text; 

// Registers the custom module into the system 
[assembly: RegisterModule(typeof(AkamaiPurge))] 

public class AkamaiPurge : Module 
{ 
    // Module class constructor, the system registers the module under the name "CustomInit" 
    public AkamaiPurge() 
     : base("CustomInit") 
    { 
    } 

    // Contains initialization code that is executed when the application starts 
    protected override void OnInit() 
    { 
     base.OnInit(); 

     // Assigns custom handlers to events 
     DocumentEvents.Insert.After += Document_Insert_After; 
     DocumentEvents.Update.After += Document_Update_After; 
     DocumentEvents.Delete.After += Document_Delete_After; 
    } 

    /// <summary> 
    /// Will be triggered when any document is added 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void Document_Insert_After(object sender, DocumentEventArgs e) 
    { 
     // PurgeCache(); 
     PurgeCacheAkamai(); 
    } 
    /// <summary> 
    /// Will be triggered when any document is Updated 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void Document_Update_After(object sender, DocumentEventArgs e) 
    { 
     //PurgeCache(); 
     PurgeCacheAkamai(); 
    } 

    /// <summary> 
    /// Will be triggered when any document is Deleted 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void Document_Delete_After(object sender, DocumentEventArgs e) 
    { 
     //PurgeCache(); 
     PurgeCacheAkamai(); 
    } 

    /// <summary> 
    /// Following function will invalidate cache from Akamai server 
    /// </summary> 
    public void PurgeCache() 
    { 

     string secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
     string clientToken = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
     string accessToken = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
     string apiurl = "https://akab-7t5mh54r7lq3a7d7-js5q6mdtx42qimcn.purge.akamaiapis.net/ccu/v3/invalidate/url/production"; 

     List<string> headers = new List<string>(); 
     string httpMethod = "POST"; 
     string data = "{\"hostname\": \"www.qa.worldventures.com\",\"objects\": [\"www.qa.worldventures.com/getmedia/9931b92a-c7f3-4a71-ab27-37e2b13572c0/should-be-here.jpg?width=2541&height=1811&ext=.jpg\"]}"; 

     Stream uploadStream = null; 
     uploadStream = new MemoryStream(data.ToByteArray()); 

     var uri = new Uri(apiurl); 
     var request = WebRequest.Create(uri); 

     request.Method = httpMethod; 
     var signer = new EdgeGridV1Signer(); 
     var credential = new ClientCredential(clientToken, accessToken, secret); 

     signer.Sign(request, credential); 

     using (var result = signer.Execute(request, credential)) 
     { 
      using (result) 
      { 
       using (var reader = new StreamReader(result)) 
       { 
        string value = reader.ReadToEnd(); 
       } 
      } 
     } 
    } 

    /// <summary> 
    /// Following function will invalidate cache from Akamai server 
    /// </summary> 
    public void PurgeCacheAkamai() 
    { 
     string secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
     string clientToken = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
     string accessToken = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
     string apiurl = "https://akab-7t5mh54r7lq3a7d7-js5q6mdtx42qimcn.purge.akamaiapis.net/ccu/v3/invalidate/url/production"; 
     List<string> headers = new List<string>(); 
     string httpMethod = "POST"; 
     string outputfile = null; 
     string data = "{\"hostname\": \"www.qa.worldventures.com\",\"objects\": [\"www.qa.worldventures.com/getmedia/9931b92a-c7f3-4a71-ab27-37e2b13572c0/should-be-here.jpg?width=2541&height=1811&ext=.jpg\"]}"; 
     int maxBodySize = 2048; 

     EdgeGridV1Signer signer = new EdgeGridV1Signer(null, maxBodySize); 
     ClientCredential credential = new ClientCredential(clientToken, accessToken, secret); 

     Stream uploadStream = null; 
     uploadStream = new MemoryStream(data.ToByteArray()); 

     var uri = new Uri(apiurl); 
     var request = WebRequest.Create(uri); 

     foreach (string header in headers) request.Headers.Add(header); 
     request.Method = httpMethod; 

     Stream output = Console.OpenStandardOutput(); 
     if (outputfile != null) 
      output = new FileInfo(outputfile).OpenWrite(); 

     signer.Sign(request, credential, uploadStream); 

     using (var result = signer.Execute(request, credential, uploadStream)) 
     { 
      using (output) 
      { 
       using (result) 
       { 
        using (var reader = new StreamReader(result)) 
        { 
         string value = reader.ReadToEnd(); 
        } 
       } 
      } 
     } 

     //using (var result = signer.Execute(request, credential)) 
     //{ 
     // using (result) 
     // { 
     //  using (var reader = new StreamReader(result)) 
     //  { 
     //   string value = reader.ReadToEnd(); 
     //  } 
     // } 
     //} 
    } 
    public void PurgeCacheAkamai2() 
    { 
     // Create a request using a URL that can receive a post. 
     WebRequest request = WebRequest.Create("https://akab-7t5mh54r7lq3a7d7-js5q6mdtx42qimcn.purge.akamaiapis.net/ccu/v3/invalidate/url/production"); 
     // Set the Method property of the request to POST. 
     request.Method = "POST"; 
     // Create POST data and convert it to a byte array. 
     string postData = "This is a test that posts this string to a Web server."; 
     byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
     // Set the ContentType property of the WebRequest. 
     request.ContentType = "application/x-www-form-urlencoded"; 
     // Set the ContentLength property of the WebRequest. 
     request.ContentLength = byteArray.Length; 
     // Get the request stream. 
     Stream dataStream = request.GetRequestStream(); 
     // Write the data to the request stream. 
     dataStream.Write(byteArray, 0, byteArray.Length); 
     // Close the Stream object. 
     dataStream.Close(); 
     // Get the response. 
     WebResponse response = request.GetResponse(); 
     // Display the status. 
     Console.WriteLine(((HttpWebResponse)response).StatusDescription); 
     // Get the stream containing content returned by the server. 
     dataStream = response.GetResponseStream(); 
     // Open the stream using a StreamReader for easy access. 
     StreamReader reader = new StreamReader(dataStream); 
     // Read the content. 
     string responseFromServer = reader.ReadToEnd(); 
     // Display the content. 
     Console.WriteLine(responseFromServer); 
     // Clean up the streams. 
     reader.Close(); 
     dataStream.Close(); 
     response.Close(); 
    } 
} 

Antwort

0

Es hängt davon ab, wie Sie es tun wollen.

Zum Beispiel, wenn Sie immer noch CCU oder Fast Purge-Funktion von akamai verwenden.

Wenn Sie CCU oder Fast Purge verwenden, ist es am besten, alle Ihre Bilder mit einem dedizierten CP-Code zu versehen. Sobald Sie fertig sind, können Sie den CP-Code löschen, der alle Bilder intern säubern wird.

paar nützliche Dokumente, die Sie für CCU verweisen: https://developer.akamai.com/api/purge/ccu-v2/overview.html

für schnelle Purge: https://control.akamai.com/dl/customers/FIMA/Fast-Purge-QuickRef.pdf https://github.com/akamai-open/api-kickstart/tree/master/examples

danken, Vinod

Verwandte Themen