0

FLEXIBLEのGoogleアプリケーションエンジンのJavaでは、どのようにファイルのキャッシュを無効にしますか? gsutilを使ってバケツ全体や個々のファイルを保存したときや読み込んだときに無効になっているかどうかは気にしません。 (私はちょうどファイルが頻繁に置き換えられ、同じファイル名を使用するので、何もキャッシュされたくない)。Googleのクラウドストレージ(フレキシブルなアプリケーションエンジンのJava)のファイルのキャッシュを無効にする

ファイルを格納するための私のコードは:意図したとおりに

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ファイルをアップロードし、交換のために完璧に動作します。ユーザーがWebページのpdfを表示すると、最近置き換えられた場合、キャッシュされたコピーが表示されます。新しいバージョンがWebサイトで表示されるまでには1時間かかります。

バケットを編集したり、ファイルを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サーブレットを介して返されます。

標準のGoogleアプリケーションエンジンもタグ付けされていますが、これは実際にGoogleのクラウドストレージの問題です。ソリューションがgsutilまたはクラウドコンソールにあるかどうかはわかりませんが、GoogleのクラウドにアクセスするJavaコードフレキシブルとスタンダードのストレージが異なります。

答えて

0

オブジェクトは一般に読み取り可能であり、Cache-Controlヘッダーがキャッシュを許可する場合、キャッシュ可能です。したがって、これらのいずれか/両方を変更することでキャッシュを無効にすることができます。例えば、のCache-Controlヘッダの設定についてこのgsutilのドキュメントを参照してください:私は、彼らが公に読めるが同様に...しかし、バケットが間違いではないに設定されている場合は、オブジェクトのみキャッシュ可能であることを読ん

https://cloud.google.com/storage/docs/gsutil/addlhelp/WorkingWithObjectMetadata#cache-control

+0

パブリックであり、ファイルのアドレスをWebブラウザに入力して表示することはできません。どうすればファイルをjavaとcache-controlヘッダーで一般に公開されないように明示的に設定できますか?私は、光沢がひどくない柔軟なアプリケーションエンジンのドキュメントを見つける.... – KevinG

関連する問題