首頁 > Java > java教程 > 主體

java快取技術的介紹

黄舟
發布: 2017-02-06 16:14:43
原創
1260 人瀏覽過

一、什麼是快取
1、Cache是​​高速緩衝記憶體一種特殊的記憶體子系統,其中複製了頻繁使用的資料以利於快速存取
2、凡是位於速度相差較大的兩種硬體/軟體之間的,用來協調兩者資料傳輸速度差異的結構,​​皆可稱為Cache

二、快取的分類
1、基於web應用的系統架構圖

java快取技術的介紹

2、在系統架構的不同層級之間,為了加快存取速度,都可以存在快取

  • 作業系統磁碟快取->減少磁碟機械操作

  • 資料庫快取->減少檔案系統I/O

  • 應用程式快取->減少檔案系統I/O

  • 應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少資料庫的查詢 

  • Web伺服器快取->減少應用程式伺服器請求

客戶端瀏覽器快取->減少網站的存取



三、快取
1、快取

1 Cache:作業系統會把經常存取的檔案內容放入記憶體當中,由檔案系統來管理
    2、當應用程式透過檔案系統存取磁碟檔案的時候,作業系統從Disk Cache當中讀取檔案內容,加速了檔案讀取速度
  • 3、Disk Cache由作業系統來自動管理,一般不用人工幹預,但應保證實體記憶體充足,以便於作業系統可以使用盡量多的記憶體充當Disk Cache,加速檔案讀取速度

    4 、特殊的應用程式對檔案系統Disk Cache有很高的要求,會繞過檔案系統Disk Cache,直接存取磁碟分割區,自己實作Disk 

    5、Cache策略
  • Oracle的raw device(裸設備) –直接拋棄檔案系統


MySQL的InnoDB: innodb_flush_method = O_DIRECT

  • 四、資料庫快取

    1、重要的資料庫量通常非常龐大
  • 資料庫查詢操作通常很頻繁,有時還很複雜
  • 以上原因造成資料庫查詢會引起非常頻繁的磁碟I/O讀取操作,迫使CPU掛起等待,資料庫效能極度低下
  • 2、快取策略
  •      a、Query Cache


以SQL作為key值快取查詢結果集
  • 一旦以SQL作為key值快取查詢結果集
  • 設定合適的Query Cache會大幅提升資料庫效能

  • Query Cache並非越大越好,過大的Qquery Cache會浪費記憶體。

  • MySQL: query_cache_size= 128M

  •  b、Data Buffer

data bj是資料庫資料在記憶體中的容器命中率

    data buffer越大越好,多益善
  • MySQL的InnoDB buffer:innodb_buffer_pool_size = 2G
  • MySQL建議buffer pool開大到實體記憶體60-80%快取
  • 由O/R Mapping框架例如Hibernate提供,透明性訪問,細顆粒度快取資料庫查詢結果,無需業務代碼明確編程,是最省事的快取策略
  • 當軟體結構按照O/ R Mapping框架的要求進行針對性設計,使用物件快取將會極大降低Web系統對於資料庫的存取請求
  • 良好的設計資料庫結構和利用物件緩存,能夠提供極高的效能,物件快取適合OLTP (線上事務處理)應用


2、查詢緩存
  • 對資料庫查詢結果集進行緩存,類似資料庫的Query Cache
  • 適用於一些耗時,但是時效性要求較低的場景。查詢快取和物件快取適用的場景不一樣,是互為補充的
  • 當查詢結果集涉及的表格記錄被修改以後,需要注意清理快取

3、頁面快取
        a、
  • 3、頁面快取

        a、
  • 針對頁面的快取技術不但可以減輕資料庫伺服器壓力,還可以減輕應用程式伺服器壓力

  • 好的頁面快取可以極大提高頁面渲染速度

頁面快取的難點

     b、分類
  •          I、動態頁面靜態化

    • 利用模板技術將訪問過一次的動態頁面生成靜態html,同時修改頁面鏈接,下一次請求直接訪問靜態鏈接頁面

    • 動態頁面靜態化技術的廣泛應用於互聯網CMS/新聞類Web應用,但也有BBS應用程式使用該技術,例如Discuz!

    • 無法進行權限驗證,無法顯示個人化資訊

    • 可以使用AJAX請求來彌補動態頁面靜態化的某些缺點

    可以使用AJAX請求來彌補動態頁面靜態化的某些缺點

    Serlet快取

    • 針對URL存取返回的頁面結果進行緩存,適用於粗粒度的頁面緩存,例如新聞發布

    • 可以進行權限的檢查

    • OScache提供了簡單的Servlet緩存通過簡單的web. xml中的設定)

    • 也可以自行編程實作Servlet快取

            III、頁面內部快取

    • 針對動態頁面的局部內容化快取一些快取的(例如部落格)

    • OSCache提供了簡單的頁面快取

    • 可以自行擴充JSP Tag實作頁局部快取

    六、webc緩存,如squid/nginx

    • Web伺服器快取技術被用來實現CDN(內容分發網絡content delivery network)

    • 被國內主流門戶網站大量採用

    • 被國內主流門戶網站大量採用
    • 被國內主流門戶網站大量採用

    • 被國內主流門戶網站大量採用

    • 被國內主流門戶網站大量採用

    • 被國內主流門戶網站使用但僅限於發布類別網站,頁面即時性要求不高


    七、基於ajax的瀏覽器快取


    使用AJAX呼叫的時候,將資料庫在瀏覽器端快取


    只要重新整理目前頁面,就可以直接讀取快取資料

    🎜🎜🎜只適用於使用AJAX技術的頁面🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜就是對快取技術的內容,更多介紹相關內容的內容,Pjava中文網(www.php.cn)! 🎜🎜🎜🎜
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!