1. 程式人生 > >Spring boot首頁載入快取問題

Spring boot首頁載入快取問題

    在專案使用測試過程中,發現有時使用者展示不出來,而且不是必現,讓人頭痛。自己測試通過不斷重新整理頁面,的確偶爾出現使用者資訊展示不出來問題,通過F12準備定位一下是頁面請求載入情況,發現問題又不出現了。。。按正常如果是程式碼問題,應該不會出現這樣的情況。那怎麼出現這個問題的呢?

    先梳理一下使用者資訊獲取是怎麼處理,使用者資訊請求是通過前臺呼叫後臺的Restful介面獲取的,處理方式很簡單,直接呼叫session.getAttribute("user")返回給前臺的。使用者資訊為空,說明這個Session中沒有user資訊。

    而這個user資訊是ZUUL中做了一個請求登入過濾器,即校驗使用者請求是否已經登入,如果沒有登入,則跳轉到SSO登入頁面,登入成功以後,將使用者資訊設定到SESSION中。

    按正常的請求處理邏輯應該是隻要使用者登入了,SESSION中肯定會有使用者資訊。Why取不到呢???

   再冷靜分析一下,應該請求哪個頁面的時候SESSION應該放入的呢?一般Spring boot會載入index.html頁面的時候,即請求根路徑的時候,第一次應用請求的時候放入的。在Spring boot第一請求路徑是這樣的:

    {請求協議(http|https)}://{域名或IP埠}/{context-path}/

    這是spring boot自動會將工程resources下面static或public、resources目錄(這個路徑支援spring.resources.static-locations配置)下面的index.html靜態頁面載入返回給前臺,作為歡迎頁面,應用的起始頁面。

    這個index頁面正常載入啦,為什麼沒有SESSION中的使用者沒有設定呢???

    突然想到了頁面快取問題,難道index頁面被快取了???

    果然,在F12的除錯的時候,disable cache了,故每次重新整理頁面都不會出現,通過將其關閉問題就出現了。

    

 既然問題原因找到了,那就解決問題吧,怎麼遮蔽掉請求快取。

 剛開始準備通過在index.html頁面中設定cache-control,

 <meta http-equiv="Cache-Control" content="no-cache,max-age=0" />

發現其根本不起作用,初步估計應該是Spring boot預設載入index.html方式導致的吧。

然後嘗試Spring boot resources cache設定,

這種方式也不行,目前還沒有想清楚原因,前臺請求響應的確設定了max-age了。

最終通過NGINX在location中配置expires=0解決了,由於NGINX是全域性的,最好根據不同的location設定不同的expires,像JS、PNG等不經常變換的請求設定稍微長一點的expires時間,提升系統載入效能。

相關推薦

Spring boot載入快取問題

    在專案使用測試過程中,發現有時使用者展示不出來,而且不是必現,讓人頭痛。自己測試通過不斷重新整理頁面,的確偶爾出現使用者資訊展示不出來問題,通過F12準備定位一下是頁面請求載入情況,發現問題又不出現了。。。按正常如果是程式碼問題,應該不會出現這樣的情況。那怎麼出現這個

WordPress載入速度--簡單優化&顯著效果

用了昨晚大概兩個小時,進行了個人站點首頁的優化,首頁載入時間提升數倍(百度分析:網通從8秒優化到2秒,電信從20秒以上優化到3秒以內),其實僅僅是針對首頁進行了簡單的處理,但是效果確實非常明顯。現在記錄下來,很多新手建站也會面臨首頁載入慢的問題,可以參考一下,也許你的站點就能得

REDIS學習(3.2)spring boot 使用redis作為快取

一,指定主鍵的生成規則 在3.1的基礎上修改RedisConfig @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport {     @Be

Spring Boot 結合 Redis實現快取

當Redis作為快取使用時,我們可以將它作為Spring Cache的實現,直接通過註解使用@CacheConfig,@Cacheable,@CachePut,@CacheEvict。 引入依賴(SpringBoot從1.4版本開始,spring-boot-starter-redis依賴改名了。

spring boot 使用ehcache 實現快取

所謂快取是一種儲存機制,可將資料儲存在某一個地方,並以一種更快的方式為以後的請求提供服務 spring 對於快取提供了宣告式快取註解 ,並提供了四種類型的宣告式快取註解(同樣是使用了AOP 技術實現),這些註解定義了那些 方法的返回值將要被快取或者從快取儲存器中移除 ,需要注意的是,

spring boot從redis取快取發生java.lang.ClassCastException異常

1 2018-09-24 15:26:03.406 ERROR 13704 --- [nio-8888-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet]

部落格載入的優化

部落格地址:https://ainyi.com/#/62 這些日子剛到京東工作,剛在北京安定下來,事情比較多 但在上週看了看我的部落格,發現首頁的載入速度真的夠慢的 雖然之前就發覺,但一直不知道怎麼繼續優化,好像該優化的都已經優化好 重大 bug 從剛做好這個部落格不就第一次就發現了,發起

使用Spring Boot整合Redis操作快取

下來操作SpringBoot整合Redis 首先Redis是一個開源(BSD許可)的,記憶體中的資料結構儲存系統,它可以用作資料庫,快取和訊息中介軟體 1)使用docker安裝redis 如果沒有安裝Redis, 請使用以下命令安裝: [[email 

easyui pagination spring boot程式實現

分頁的思想,第一要知道每個頁面計劃展示多少個item,還要知道 總數量是多少 allcount ,可以計算出多少pages , 首先要用總條數 % 每頁的個數 看看餘數是否大於0 如果大於0 ,說明頁數要+1 ,如果餘數為0 則不用+1 ,公式如下: pages = (allco

解決vue專案載入過慢的情況

什麼導致了首頁初步載入過慢 請看下面一張圖就清楚了 即app.js檔案過大導致的。。。 如何來處理 vue-route 懶載入 component: resolve => require(['

Spring Boot 整合 Redis 實現快取操作

package org.spring.springboot.service.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.spring.springboot.dao.CityDao; impor

Spring boot顯示資料(1)

spring boot分頁顯示資料(1) 記錄一下~ 我們從簡入繁,先使用一種通過頁面重新整理來實現分頁資料展示的方法~ 下面是一個簡單的栗子 使用工具:spring-data-jpa,thymeleaf 實體類: 實體類中不要忘記定義空的構造方法哦~

Spring Boot 配置檔案載入順序

有這麼一種情況,在application.properties有以下配置: spring.profiles.active=dev 然後在logback-spring.xml中有以下配置: <springProfile name="test"> <pr

spring-boot整合redis作為快取(3)——自定義key

        分幾篇文章總結spring-boot與Redis的整合         4、自定義key         5、spring-boot引入Redis         在上一篇文章中說道key是用來分辨同一個快取中的快取資料的。key是可以自己制定的,也

spring boot啟動時載入系統資料的方法

有時候我們需要在應用啟動或者重啟後做一些工作,比如刪除一些臨時檔案或者Redis中的快取,這在沒有使用Spring Boot之前,在Spring框架下是通過ApplicationListener監聽器來實現的,在Spring Boot下也有一些辦法,可以通過使用CommandLineRunner和A

spring boot hibernate 懶載入解決方案

spring boot 是快速構建微服務的新框架。對於資料訪問問題可以直接使用jpa技術,但是在單元測試發現spring jpa存在hibernate懶載入問題。hibernate懶載入異常但是spring-boot沒有xml配置檔案所以現在網路上好多的解決方案並不能適用在spring boot框架中。在遇到

spring-boot查詢(關聯表)

引言:由於公司轉型,使我原本android開發工程師,轉變為後臺開發工程師,對於後臺,除了大學利用servlet寫過些專案,其他就一無所知。公司使用spring-boot框架.那麼spring-boot框架究竟是什麼呢?Spring-boot是微框架,是由P

Spring Boot中使用資料快取

春節就要到了,在回家之前要趕快把今年欠下的技術債還清。so,今天繼續。Spring Boot前面已經預熱了n篇部落格了,今天我們來繼續看如何在Spring Boot中解決資料快取問題。本篇部落格是以初識在Spring Boot中使用JPA為基礎的,先了解如何實現

spring boot學習(十三)SpringBoot快取(EhCache 2.x 篇)

SpringBoot 快取(EhCache 2.x 篇) SpringBoot 快取 在 Spring Boot中,通過@EnableCaching註解自動化配置合適的快取管理器(CacheManager),Spring Boot根據下面的順序去偵測快取

35. Spring Boot整合Redis實現快取機制【從零開始學Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000