亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在使用 angular7 和 springboot 構建的 Web 應用程序中使瀏覽器緩存無效

如何在使用 angular7 和 springboot 構建的 Web 應用程序中使瀏覽器緩存無效

開滿天機 2022-10-20 15:18:41
我正在使用 springboot 為后端服務 rest API 和 Angular7 為前端開發一個 Web 應用程序。我的應用程序需要很長時間才能加載,因為它必須在服務器上執行大量處理,所以我決定通過存儲緩存數據來提高性能,以便首先加載頁面并最終在處理結束時更新數據。這可行,但我遇到了一個問題:當我在 Angular 中更新數據時,這些數據通常保存在我的數據庫中,但如果我更新頁面,我看不到更改,因為瀏覽器繼續訪問舊的緩存數據而不是獲取新的修改。有沒有辦法在修改瀏覽器緩存中的某些數據時使其無效?彈簧靴:我的休息控制器端點類似于:  @GetMapping(value = "/users")  public Iterable<User> getAllUsers(HttpServletResponse response) {    response.setHeader("Cache-Control", "max-age=3600");    return this.userService.findAll());  }我的服務:  @Cacheable("users")  public Iterable<User> findAll() {    return this.userRepository.findAll();  }我的角度服務:  getUsers(): Observable<User[]> {    return this.http.get<User[]>(`<ip>' + '/users');  }
查看完整描述

2 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

我可以看到您正在服務器端進行緩存,您可以通過調用使用@CacheEvict您要驅逐的密鑰注釋的方法來驅逐緩存:


@CacheEvict(value = "users", allEntries = true)

或者您可以使用以下方式以編程方式執行此操作CacheManager:


@Autowired

CacheManager cacheManager;


public void evictSingleCacheValue(String cacheName, String cacheKey) {

    cacheManager.getCache(cacheName).evict(cacheKey);

}


查看完整回答
反對 回復 2022-10-20
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

您可以通過輕量級請求檢查服務器端基于時間或基于內容的控件是否有任何更改。

基于時間 => 您可以在標題中使用 Last=Modified

基于內容 => 你可以使用 Etag

請檢查這兩個鏈接; https://devcenter.heroku.com/articles/increasing-application-performance-with-http-cache-headers

https://www.logicbig.com/quick-info/web/last-modified-and-if-modified-since.html


查看完整回答
反對 回復 2022-10-20
  • 2 回答
  • 0 關注
  • 83 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號