【发布时间】:2017-07-12 15:43:35
【问题描述】:
在灵活的谷歌应用引擎上的 Java 中,如何禁用文件缓存?我不在乎它是否在使用 gsutil 的整个存储桶上被禁用,或者在我保存它们或读取它们时禁用单个文件。 (我只是不想缓存任何东西,因为文件经常被替换并使用相同的文件名)。
我存储文件的代码:
private static Storage storageService;
public static void uploadStream(
String name, InputStream stream, String bucketName)
throws IOException, GeneralSecurityException {
Storage storage = StorageOptions.getDefaultInstance().getService();
Blob blob = storage.create(BlobInfo.newBuilder(bucketName, name).build(),stream);}
此代码可以完美地按预期上传和替换 pdf 文件。当用户在网页上查看 pdf 时,如果它最近被替换,他们会看到一个缓存副本。新版本需要一个小时才能在网站上查看。
我不确定这是否是我需要编辑存储桶、在 java 中保存文件时不设置缓存或读取文件时不设置缓存的地方。我读取文件的代码是:
public ByteArrayOutputStream downloadStream (String bucketName, String filePath)
throws Exception {
Storage storage = getService();
byte [] bytes = storage.readAllBytes(bucketName,filePath);
ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length);
baos.write(bytes, 0, bytes.length);
return baos;
}
然后通过 web servlet 返回。
标准谷歌应用引擎也被标记,因为这确实是谷歌云存储问题,我不确定解决方案是否在于 gsutil 或云控制台,但请注意访问谷歌云存储的 java 代码灵活和标准之间会有所不同。
【问题讨论】:
标签: java google-app-engine google-cloud-storage app-engine-flexible