日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java no cache_java – 在我的部署中设置Cache-Control no-cache,no-store是什么?

發(fā)布時間:2025/5/22 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java no cache_java – 在我的部署中设置Cache-Control no-cache,no-store是什么? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我有一個問題,我的應(yīng)用程序部署總是返回響應(yīng)標(biāo)頭:

Cache-Control: no-cache

Cache-Control: no-store

Expires:Thu, 01 Jan 1970 00:00:00 GMT

Pragma:no-cache

我正在使用:

春季3.1.2.RELEASE

Primefaces JSF 3.4.1

Spring Webflow 2.3.0.RELEASE

JBoss AS 7.0.1

我已經(jīng)嘗試了幾乎我可以找到的應(yīng)用程序方面的所有解決方案:

>配置WebContentInterceptor(嘗試了各種排列)Right out of the box cache-control header filter?

>編寫自定義攔截器,添加不同的Cache-Control標(biāo)頭(使用Cache-Control測試:私有)

>編寫添加HTTP響應(yīng)參數(shù)的客戶過濾器.使用Cache-Control配置它:private作為web.xml中的init-params

>使用context.xml文件(在META-INF /和WEB-INF /中都嘗試過)來禁用JBoss / Tomcat http://daveharris.wordpress.com/2007/07/09/how-to-configure-cache-control-in-tomcat/中的Cache-Control

在所有上述情況中,響應(yīng)頭從未結(jié)束不同,總是沒有緩存,沒有存儲,1970年到期,pragma:no-cache

我的想法已經(jīng)不多了,有人知道在我的響應(yīng)中設(shè)置這些標(biāo)頭是什么,所以我可以定位適當(dāng)?shù)牟渴鸾M件來解決這個問題嗎?

解決方法:

導(dǎo)致這種情況的根代碼是在Spring MVC中,從WebContentGenerator調(diào)用.此類用作MVC / Webflow堆棧中幾個類的基類:WebContentInterceptor(MVC攔截器),AbstractController(MVC控制器),AbstractHandlerMethodAdapter(MVC HandlerAdapter),AnnotationMethodHadlerAdapter(MVC HandlerAdapter),FlowHandlerAdapter(Webflow HandlerAdapter),JsfFlowHandlerAdapter(Webflow JSF HandlerAdapter)

CacheControl seconds設(shè)置為0會調(diào)用preventCaching方法.因此,應(yīng)用程序似乎默認(rèn)設(shè)置為0.

org.springframework.web.servlet.support.WebContentGenerator

protected final void preventCaching(HttpServletResponse response) {

response.setHeader(HEADER_PRAGMA, "no-cache");

if (this.useExpiresHeader) {

// HTTP 1.0 header

response.setDateHeader(HEADER_EXPIRES, 1L);

}

if (this.useCacheControlHeader) {

// HTTP 1.1 header: "no-cache" is the standard value,

// "no-store" is necessary to prevent caching on FireFox.

response.setHeader(HEADER_CACHE_CONTROL, "no-cache");

if (this.useCacheControlNoStore) {

response.addHeader(HEADER_CACHE_CONTROL, "no-store");

}

}

}

我發(fā)現(xiàn)自從我使用JSF Webflow以來,JsfFlowHandlerAdapter首先處理對流/視圖的服務(wù)器請求.這就是為什么配置攔截器沒有幫助的原因,因為JsfFlowHandlerAdapter此時已經(jīng)設(shè)置了Cache-Control和其他HTTP頭.事實證明我已經(jīng)擴(kuò)展了JsfFlowHandlerAdapter以處理FlowExecutionRestorationFailureException(參見Sping Web Flow Preventing Back Button Use),所以我需要做的就是設(shè)置我想要的配置ala WebContentInterceptor(因為配置屬于基類WebContentGenerator).

自定義JsfFlowHandlerAdapter

public class MyAppFlowHandlerAdapter extends org.springframework.faces.webflow.JsfFlowHandlerAdapter {

...

}

webmvc-config.xml中

class="com.myapp.MyAppFlowHandlerAdapter">

class="com.myapp.CacheControlInterceptor">

CacheControlInterceptor(設(shè)置自己的HTTP標(biāo)頭.在WebContentGenerator中執(zhí)行它的方法是最終的,所以不能@Override)

public class CacheControlInterceptor extends HandlerInterceptorAdapter {

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

//Example below: set your Cache-Control, expires, pragma headers here

response.setHeader("Cache-Control", "private");

return true;

}

}

標(biāo)簽:java,spring,jboss,primefaces,spring-webflow

來源: https://codeday.me/bug/20190620/1246927.html

總結(jié)

以上是生活随笔為你收集整理的java no cache_java – 在我的部署中设置Cache-Control no-cache,no-store是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。