-1

我在S3中部署了一個靜態Web應用程序(SPA),並使用CloudFront爲應用程序提供服務,並使用Route53路由該域。現在,我希望Route53和CloudFront在其各自的高速緩存中具有最大的TTL。有這樣的similar question,但已經過時。在S3,CloudFront和Route53中部署Web應用程序的最佳實踐

我的問題:

  1. 是否CloudFront的緩存設置爲1年(365天)是好的,當任何新的更新到S3時,我們可以使用API​​緩存失效或安慰?

  2. 假設別名記錄不經常改變的Route53 NS緩存設置爲2天(48小時)是正確的?如果我們必須改變,那麼我們是否需要保持謹慎並等待2天才能反映出來。

我認爲將Route53和CloudFront緩存設置爲最大值會給用戶帶來最佳體驗(低延遲)。如果我錯了,請糾正我。

回答

1

Q1:如果您非常確定您的對象的壽命很長,那麼使用CloudFront緩存可能會持續1年。您可以使用Web控制檯始終無效的對象或通過使用腳本是這樣的:

#!/bin/sh 
aws configure set preview.cloudfront true 

INVALIDATION_ID=$(date +"%S") 
INVALIDATION_JSON="{ 
    \"DistributionId\": \"<YOUR_DISTRIBUTION_ID>\", 
    \"InvalidationBatch\": { 
     \"Paths\": { 
      \"Quantity\": 1, 
      \"Items\": [ 
       \"/*\" 
      ] 
     }, 
     \"CallerReference\": \"$INVALIDATION_ID\" 
    } 
}" 

aws cloudfront create-invalidation --cli-input-json "$INVALIDATION_JSON" 

請注意,如果您需要失效,那麼你就不能invalide用戶的瀏覽器緩存。所以我只會選擇像文件那樣的高級設置,其中我絕對肯定他們不會改變(例如,視頻)。

我發現根據Google的建議選擇我的緩存時間非常有用。你會find some input here。但是,我不會很難緩存一個SPA:我會假設你經常會在那裏發生變化。

Q2:我認爲將Route 53 TTL設置爲更高數字是最佳做法。請記住,您無法如此快速地切換DNS。通常在DNS切換之前,請提前幾天將TTL降低到較低的數字。由於您使用的是AWS,對於Alias-Resources,這應該不會成爲一個問題,因爲DNS交換機沒有麻煩。

一般來說,我同意你的方法。你犧牲了一些靈活性,但它通常是值得的。

+0

謝謝@christian。我有一些關於CloudFront設置的問題,我在這裏發佈:http://stackoverflow.com/questions/43343759/confused-with-minimum-maximum-and-default-ttl-in-cloudfront –

相關問題