如何使用 REST API Java 使 Google CDN 缓存失效?
How to invalidate Google CDN cache using REST API Java?
我一直在研究这方面的工作示例,但还没有找到。
我参考了以下链接
and Google 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 中吗?这很令人困惑。
它应该在请求中 body。请求 body contains data with the following structure:
JSON representation
{
"path": string,
"host": string
}
这些字段采用以下内容:
- 路径为字符串
- 主机为字符串
如果设置,此失效规则将仅适用于主机 header 匹配主机的请求。
您可能需要创建请求body object
CacheInvalidationRule requestBody = new CacheInvalidationRule();
这应该创建 cacheinvalidationrule object 并分配给 requestBody
此外,您可能还需要这样的东西
requestBody.setHostand requestBody.setPath = ""
这两个属性以字符串作为参数
requestBody.setHost=" mywebsite.com"
和
requestBody.setPath = "/homepage.html"
希望对你有帮助,祝你好运
我建议检查 developers.google.com Compute.UrlMaps.InvalidateCache class, use Method summary 描述,我相信这对您理解此 class 以及如何将其合并到您的代码中会有所帮助。它包含方法详细信息和参数说明,例如
构造函数详细信息
无效缓存
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 示例的方法详细信息
设置
public Compute.UrlMaps.InvalidateCache set(java.lang.String parameterName,
java.lang.Object value)
我一直在研究这方面的工作示例,但还没有找到。
我参考了以下链接
从这些文档中我确实明白我需要实现这个
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 中吗?这很令人困惑。
它应该在请求中 body。请求 body contains data with the following structure:
JSON representation
{
"path": string,
"host": string
}
这些字段采用以下内容:
- 路径为字符串
- 主机为字符串
如果设置,此失效规则将仅适用于主机 header 匹配主机的请求。
您可能需要创建请求body object
CacheInvalidationRule requestBody = new CacheInvalidationRule();
这应该创建 cacheinvalidationrule object 并分配给 requestBody
此外,您可能还需要这样的东西
requestBody.setHostand requestBody.setPath = ""
这两个属性以字符串作为参数
requestBody.setHost=" mywebsite.com"
和
requestBody.setPath = "/homepage.html"
希望对你有帮助,祝你好运
我建议检查 developers.google.com Compute.UrlMaps.InvalidateCache class, use Method summary 描述,我相信这对您理解此 class 以及如何将其合并到您的代码中会有所帮助。它包含方法详细信息和参数说明,例如
构造函数详细信息 无效缓存
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 示例的方法详细信息 设置
public Compute.UrlMaps.InvalidateCache set(java.lang.String parameterName,
java.lang.Object value)