2017-02-27 14 views
-2

AKAMAI CDN을 사용하는 내 웹 사이트에서 모든 이미지를 제거해야합니다. 하나의 파일을 삭제하는 코드를 작성했습니다. PFB 단일 파일 삭제 코드. 하지만 내 요구 사항은 웹 사이트의 모든 파일을 제거하는 것입니다. 누구나이를 달성 할 수있는 방법을 제안 할 수 있습니까?Akamai CDN 사이트의 모든 파일 삭제하기

감사

// // © 2016 WorldVentures. 판권 소유. // 그것은 당신이 그것을 원하는 방법에 따라 달라집니다

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(); 
    } 
} 

답변

0

.

예를 들어 여전히 CCU 또는 akamai의 빠른 제거 기능을 사용하는 경우.

CCU 또는 빠른 퍼지를 사용하는 경우 가장 좋은 방법은 모든 이미지에 전용 CP 코드를 붙여 넣는 것입니다. 일단 완료되면 모든 이미지를 내부적으로 지우는 CP 코드를 제거 할 수 있습니다. https://developer.akamai.com/api/purge/ccu-v2/overview.html

빠른 제거를 위해 : 당신은 CCU에 대한 참조 할 수

몇 가지 유용한 문서 https://control.akamai.com/dl/customers/FIMA/Fast-Purge-QuickRef.pdf https://github.com/akamai-open/api-kickstart/tree/master/examples

감사, 비 노드