簡體   English   中英

如何使用 REST API Java 使 Google CDN 緩存失效?

[英]How to invalidate Google CDN cache using REST API Java?

我一直在為此研究一個工作示例,但沒有找到任何示例。

我參考了以下鏈接Stackoverflow LinkGoogle Official Docs

從這些文檔中,我確實了解到我需要實現這一點

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.compute.Compute;
import com.google.api.services.compute.model.CacheInvalidationRule;
import com.google.api.services.compute.model.Operation;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Arrays;

public class ComputeExample {
  public static void main(String args[]) throws IOException, GeneralSecurityException {
    // Project ID for this request.
    String project = "my-project"; // TODO: Update placeholder value.

    // Name of the UrlMap scoping this request.
    String urlMap = "my-url-map"; // TODO: Update placeholder value.

    // TODO: Assign values to desired fields of `requestBody`:
    CacheInvalidationRule requestBody = new CacheInvalidationRule();

    Compute computeService = createComputeService();
    Compute.UrlMaps.InvalidateCache request =
        computeService.urlMaps().invalidateCache(project, urlMap, requestBody);

    Operation response = request.execute();

    // TODO: Change code below to process the `response` object:
    System.out.println(response);
  }

  public static Compute createComputeService() throws IOException, GeneralSecurityException {
    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

    GoogleCredential credential = GoogleCredential.getApplicationDefault();
    if (credential.createScopedRequired()) {
      credential =
          credential.createScoped(Arrays.asList("https://www.googleapis.com/auth/cloud-platform"));
    }

    return new Compute.Builder(httpTransport, jsonFactory, credential)
        .setApplicationName("Google-ComputeSample/0.1")
        .build();
  }
}

但是,如果您看到這個例子,它只有占位符值。

如果我想刷新名為 https://mywebsite.com/homepage.html的頁面的緩存,我應該在上面的代碼中哪里輸入這些信息?

我在這里添加了嗎

 credential.createScoped(Arrays.asList("https://mywebsite.com/homepage.html"));

或者我應該在 UrlMaps 中添加它嗎? 這非常令人困惑。

它應該在請求正文中 go 。 請求正文包含具有以下結構的數據

JSON representation
{
  "path": string,
  "host": string
}

這些字段包含以下內容:

  • 路徑作為字符串
  • 主機作為字符串

如果設置,此失效規則將僅適用於主機 header 匹配主機的請求。

您可能需要創建 requestbody object

CacheInvalidationRule requestBody = new CacheInvalidationRule();

這應該創建緩存無效規則 object 並分配給 requestBody

此外,您可能還需要這樣的東西

requestBody.setHostand requestBody.setPath = ""

這兩個屬性將字符串作為參數

requestBody.setHost=" mywebsite.com"

requestBody.setPath = "/homepage.html"

希望對你有幫助,祝你好運

我建議檢查developers.google.com Compute.UrlMaps.InvalidateCache class使用方法摘要描述 我相信這將有助於您了解此 class 以及如何將其合並到您的代碼中。 它包含方法詳細信息和參數描述,例如

構造函數詳細信息InvalidateCache

protected InvalidateCache(java.lang.String project,
                          java.lang.String urlMap,
                          CacheInvalidationRule content)

啟動緩存失效操作,使指定路徑失效,范圍為指定 UrlMap。 為方法“urlMaps.invalidateCache”創建一個請求。 此請求包含計算服務器所需的參數。 設置任何可選參數后,調用 AbstractGoogleClientRequest.execute() 方法來調用遠程操作。

InvalidateCache#initialize(com.google.api.client.googleapis.services.AbstractGoogleC lientRequest)

必須在調用構造函數后立即調用以初始化此實例。

參數:

  • project - 此請求的項目 ID。
  • urlMap - 確定此請求范圍的 UrlMap 的名稱。
  • 內容 - CacheInvalidationRule

例如 setAlt set 的方法詳細信息

public Compute.UrlMaps.InvalidateCache set(java.lang.String parameterName,
                                           java.lang.Object value)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM