国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

深入講解_JSP 2.0下的動態內容緩存技術

2019-11-02 15:21:41
字體:
來源:轉載
供稿:網友

  內容緩存是Web應用中最普通的優化技術之一,例如,可以使用一個自定義地JSP標簽——我們將之命名為——由將每一個需要被緩存的頁面片段封裝起來。任何自定義標簽可以控制它所包含部分 (也即預先封裝的頁面片段)在何時執行,并且動態輸出結果可以被捕獲。標簽使得JSP容器(例如Tomcat)只生成內容一次,作為應用程序范圍內的JSP變量,來存儲每一個緩存片段。每次JSP頁面被執行時,自定義標簽將緩存頁面片段載入而無需再次執行JSP代碼來生成輸出結果。作為Jakarta工程的一個部分,標簽庫的開發使用了這項技術。當被緩存內容無需被每一個用戶或者請求所定制的時候,它工作的十分良好。

  這篇文章對上面描述的技術做了改進,通過使用JSP 2.0表達式語言(EL),允許JSP頁面為每一個請求和用戶定制緩存內容。緩存頁面片段可以包含未被JSP容器賦值的JSP表達式,在每一次頁面被執行時,由自定義標簽來確定這些表達式的值。因此,動態內容的建立被最優化,但是緩存片段可以含有部分由每一個請求使用本機JSP表達式語言產生的內容。通過JSP 2.0 EL API的幫助,Java開發者可以用表達式語言來使之成為可能。

  內容緩存VS數據緩存

  內容緩存不是唯一的選擇。例如, 從數據庫中提取的數據同樣可以被緩存。事實上,由于存儲的信息中不包含HTML markup,以及要求較少的內存,數據緩存可能更加高效率。然而在很多情況下,內存緩存更容易實現。假設在某個案例總,一個應用由大量事務對象,占用重要的CPU資源,產生復雜的數據,并且用JSP頁面來呈現這些數據。工作一切良好,直到某天突然地服務器的負載增加,需要一個緊急解決方案。這時在事務對象和呈現表達層之間建立一個緩存層,時一個非常不錯和有效的方案。但是必須非??焖俸土鲿车匦薷木彺鎰討B內容的JSP頁面。相對于簡單的JSP頁面編輯,應用程序的業務邏輯變化通常要求更多的工作量和測試;另外,如果一個頁面從多個復合源聚合信息時,Web層僅有少量的改變。問題在于,當緩存信息變得失去時效時,緩存空間需要被釋放,而事務對象應該知道何時發生這種情況。然而,選擇實現內容緩存還是數據緩存,或者其他的優化技術,有很多不得不考慮的因素,有時是所開發的程序所特殊要求的?!   祿彺婧蛢热菥彺鏇]有必要互相排斥,它們可以一起使用。例如,在數據庫驅動的應用中;從數據庫中提取出來的數據,和呈現該數據的HTML分別被緩存起來。這與使用JSP實時生成的模板有些相似。這篇文章中討論的基于EL API技術說明如何使用JSP EL來將數據載入到呈現模板中。

  使用JSP變量緩存動態內容

  每當實現一個緩存機制是,都需要一個存儲緩存對象的方法,在這篇文章中涉及的是String類型的對象。 一種選擇是使用一個對象——緩存框架結構,或者使用Java maps來實現自定義的緩存方案。JSP已經擁有了稱為“scoped attributes”或“JSP variables”來提供ID——object映射,這正是緩存機制所需要的。對于使用page或者request scope,這是沒有意義的,而在應用范圍內,這是一個很好的存儲緩存內容的位置, 因為它被所有的用戶和頁面共享。當每一個用戶需要單獨緩存時,Session scope也可以被使用,但這不是很有效率。JSTL標簽庫可以被是與那個來緩存內容,通過使用JSP變量正如下例所示:

  

  

  

  ...

  

  緩存頁面片段用下列語句輸出結果:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洛南县| 缙云县| 红河县| 图片| 罗山县| 庐江县| 高雄县| 新河县| 榆树市| 五常市| 行唐县| 绵竹市| 平塘县| 长子县| 富平县| 云霄县| 滦南县| 恩施市| 青铜峡市| 阆中市| 永清县| 栾川县| 普兰县| 民乐县| 抚顺县| 云和县| 恭城| 绥棱县| 甘肃省| 尉氏县| 兰坪| 封丘县| 普兰店市| 波密县| 和龙市| 北碚区| 丽江市| 长子县| 靖边县| 惠东县| 武穴市|