我正在使用Amazon API網關在調用API端點時執行Lambda函數。在我的Lambda函數中,我正在更新DynamoDB表。未調用Lambda函數的API網關緩存
每當我使用Chrome開發人員工具禁用緩存來調用API時,DynamoDB表就會更新。
當我啓用了緩存時,來自API的第一個請求更新了表,每個後續請求都快得多,但不會更新表。
我假設CloudFront正在緩存響應,以便不必每次都調用Lambda函數。
有沒有辦法強制每個請求執行Lambda函數?
我正在使用Amazon API網關在調用API端點時執行Lambda函數。在我的Lambda函數中,我正在更新DynamoDB表。未調用Lambda函數的API網關緩存
每當我使用Chrome開發人員工具禁用緩存來調用API時,DynamoDB表就會更新。
當我啓用了緩存時,來自API的第一個請求更新了表,每個後續請求都快得多,但不會更新表。
我假設CloudFront正在緩存響應,以便不必每次都調用Lambda函數。
有沒有辦法強制每個請求執行Lambda函數?
一些可能的解決方案:當u要緩存
CloudFront的只應使用。在這種情況下,你不需要它;所以直接從瀏覽器調用API端點而不是調用CF端點。這也將節省您的雲端成本。
每個請求都添加一個時間戳。如果你不得不使用CF;您可以非常輕鬆地配置它,以便哪些請求始終轉到API端點(它提供動態內容),而哪些請求將被緩存。
可能你是在調用CF作爲GET請求;只是使它永遠不會被緩存的POST。理想情況下,當你更新表時,它應該是一個POST請求。這應該是簡單的解決方案,只需進行最小限度的更改。
緩存的整個目的是不調用Lambda函數。這聽起來像你實際上並不想要啓用緩存。 –
@MarkB我不想緩存,但添加自定義域名時會自動添加CloudFront。 – Francis
啊,我誤解了你的問題。首先確保您在API設置中禁用緩存。如果您禁用了該功能,CloudFront將不會緩存您的API響應。這聽起來像你的實際問題是在瀏覽器緩存。 API響應中的「cache-control」標頭值是什麼? –