質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

2675閲覧

JavaでCloudFrontの利用でパフォーマンスの向上に繋がらない

sequence

総合スコア29

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1グッド

0クリップ

投稿2016/10/21 06:18

###環境
言語:Java1.8
FW:PlayFramework2.4
AWS:CloudFront,S3,etc...

###現状
CloudFrontを利用して画像を取得したいです。

下記のコードでCloudFront経由で
画像は取得出来ています。

Java

1String image = CloudFrontUrlSigner 2 .getSignedURLWithCannedPolicy( 3 CloudFrontUrlSigner.Protocol.https, 4 CloudFrontDomain, //設定したドメイン 5 keyFile, //SSLのPrivateKey 6 bucketPath, //S3のbucketのパス 7 keyPathId, //秘密鍵ファイルのID 8 expireTime() //署名が切れる時間 9 );

###問題点

  • 画像を取得してきた時のパスが下記のような形式でsignatureやkeypairidが全て見える形になってしまっています。

https://[domain].cloudfront.net/[bucketPath]/[指定したファイル名]?Expires=◯◯&Signature=◯◯&Key-Pair-Id=◯◯

  • このパスをブラウザで開こうとすると、画像が表示されるのではなく、対象の画像がダウンロードされてしまう
  • これは調査をできていないので断定はできないのですが、エッジサーバーにキャッシュされておらず、表示速度が遅い。

###解決したいこと

  • 利用するクラスか処理の方法を変えてパスにsignatureやkeypairidが表示されないようにしたい
  • パスのURLをたたくとダウンロードではなく、画像を表示させたい
  • とにかくパフォーマンスを上げたい -> 原因を調査する方法から知りたい

幾分、右も左もわからない状態です。
まずは原因から特定する方法と早急に変更すべきコード内容をご教授いただきたいです。
宜しく御願い致します。

A-pZ👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

利用するクラスか処理の方法を変えてパスにsignatureやkeypairidが表示されないようにしたい

Pre-Signed-URLを使うのであれば、signatureやkeypairidは必要かと思います。
制限を行わないならS3をCloudFrontのみからのアクセスに限定し、通常アクセスで取得できるコンテンツに変更してください。
そうすればsignatureやkeypairidは不要です。

パスのURLをたたくとダウンロードではなく、画像を表示させたい

Content-Typeはどうなっていますか?
curl -i http://example.com/...
でヘッダ情報を確認してみてください。

とにかくパフォーマンスを上げたい -> 原因を調査する方法から知りたい

上のcurlを使う方法で、HTTPヘッダにX-Cache: Miss from cloudfrontとあればオリジンサーバからの取得となります。
2度目に同じURLを叩いてX-Cache: Hit from cloudfrontと表示されたらCloudftontからの取得になります。

もし、実際のクライアントからアクセス毎にCookieを発行している場合は、キャッシュされない場合があります。
(この場合もcurlではキャッシュされます)

ブラウザの開発者ツール等を利用してもHTTPヘッダは確認できるので参考にされてみてはいかがでしょうか。

投稿2016/10/21 07:57

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問