>網絡緩存:網絡開發的關鍵但又古怪的方面。 在您的瀏覽器和服務器之間是一個複雜的緩存網絡,默默地優化了Internet流量。但是,如果不仔細管理,這個系統可能會引起令人困惑的矛盾。
>鑰匙要點:
Last-Modified
>,Etag
和Cache-Control
)。 Cache-Control
是至關重要的,提供諸如no-store
,no-cache
,public
,private
和max-age
>。
緩存行為由HTTP狀態代碼和標題決定。 瀏覽器/代理將提供緩存的數據,用服務器驗證數據新鮮度,或獲取新鮮數據。 標題是鑰匙:
:Cache-Control
可防止所有緩存;
no-store
>
no-cache
no-store
或no-cache
:Last-Modified
將緩存限製到用戶的瀏覽器中。 Etag
public
>
private
public
>示例(php):private
max-age
頁面和ajax數據的> 即使使用適當的標題設置,也可能會出現瀏覽器不一致,尤其是在使用後式按鈕時。 Chrome和Edge可能會恢復到初始頁面狀態,而Firefox和Safari保留了最後一個已知的狀態。
考慮一個分頁表:header('Cache-Control: private,max-age=30'); echo json_encode($data);
初始頁面加載:
res .set('Cache-Control', 'private,max-age=30') .json(data);
ajax導航:URL更改(例如,),但是Ajax更新了DOM。
如果AJAX調用使用相同的URL,則在按下後面按鈕時,Chrome/Edge可能會使用緩存的JSON而不是HTML。 解決方案:對頁面和AJAX請求使用單獨的URL(例如,在Ajax URL中添加
)。這確保了獨立的緩存。
http://myapp.com/list/
>
雖然方便開發,但自簽名的證書可阻止Chrome(以及其他基於眨眼的瀏覽器)從緩存頁面數據中進行。 這會在本地測試(無緩存)和實時部署(啟用緩存)之間造成不一致的不一致。
常見問題(常見問題解答):>
提供的常見問題解答部分在很大程度上保持不變,因為它提供了有關緩存最佳實踐和故障排除的有價值的信息。 該內容已經是結構化的,並解決了與緩存JSON響應和整體Web開發策略有關的共同問題。以上是如何解決緩存的難題的詳細內容。更多資訊請關注PHP中文網其他相關文章!