簡體   English   中英

Wicket:正確緩存 CSS 資源

[英]Wicket: proper caching of CSS resources

我們剛剛從 GWT 遷移到 Wicket 1.4。 雖然總的來說很高興,但對於 GWT 簡化的某些事情,我們仍然有一些學習曲線。 其中之一是資源緩存。

如何配置我們應用程序的資源(尤其是 CSS),以便它們不會隨每個頁面請求一起下載?

我們在某些頁面元素上看到一些閃爍,因為 styles 沒有立即應用,大概是因為每次都在下載樣式表。 我跟蹤了我們的日志,實際上,我幾乎在每個頁面請求中都看到了對樣式表的請求。

我們在 HTML 文件中直接引用 CSS,如下所示:

    <link href="/css/ag.screen.css" rel="stylesheet" type="text/css">
    <link href="/css/ag.base.css" rel="stylesheet" type="text/css">

我不確定這是否重要,但我們所有的頁面都安裝了IndexedParamUrlCodingStrategy ,因為我們需要它們既可收藏又具有特定的 URL 結構。

我嘗試實現 Stefan Fußenegger 在他的博客中建議的內容(即通過 header 貢獻引用 CSS,而不是在 HTML 中直接嘗試),但似乎沒有使用“-curl help”檢查標題。

在 Wicket 1.4 中是否有為資源設置 Cache-Control 或 Expiration 標頭的標准方法? 值得為此遷移到 Wicket 1.5 嗎? (我猶豫是否這樣做,因為它還沒有正式發布)。

編輯:我剛剛又嘗試了 1.5,但目前缺乏文檔確實是一個障礙。 IndexedParamUrlCodingStrategy和相關類都沒有了,遷移指南幾乎沒有什么可說的。

編輯 2:我剛剛注意到一些非常奇怪的事情——當我通過直接輸入 URL 或單擊 BookmarkablePageLink 到達我的一個頁面時,該頁面上引用的資源(CSS、圖像等)似乎被緩存了(我在我的日志中看不到他們的請求)。 但是如果我通過表單提交到達同一頁面,所有資源都會再次下載。 為什么表單提交會導致頁面上引用的資源被重新下載?

由於您要遷移到 Wicket,我建議您使用 1.5RC4.2。 查看有關此 RC 的錯誤報告,我認為下一個可能是 1.5.0Final。 關於緩存,請參閱此 wiki 頁面: https://cwiki.apache.org/WICKET/caching-in-wicket-15.html 它大約是 1.5,但它也說明了與 1.4 的區別。

我和你有同樣的需求,我越需要緩存資源客戶端。

現在我被困在 1.4.x 下,我找到了適合我的解決方案。 我使用 Stefan Fußenegger 寫的很棒的圖書館,他在這里提供。 實現非常簡單,我在生產模式下使用 StaticResourceVersionProvider。 到目前為止我沒有任何問題(現在對我的客戶來說堅如磐石)。

如果您需要有關我如何使用此解決方案的詳細信息,請不要猶豫。

您可以獲得開箱即用的資源指紋。 創建緩存指紋的策略可以很容易地修改或更改。

Wicket wiki 頁面上提供了有關 1.5 中資源緩存如何工作的更多信息。

要管理非 Wicket 資源的標頭,您可以使用 web.xml 中 WicketFilter 之前列出的普通 Servlet 過濾器。 只需檢查請求 Url ,如果文件擴展名為 .css/.js/... 則只需在響應中設置緩存標頭。 關於 Wicket 1.5 中的 **UrlCodingStrategies,請閱讀http://wicketinaction.com/2011/07/wicket-1-5-request-mapper/以及接下來的兩篇文章。 我希望你會更清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM