首頁 後端開發 php教程 [codeigniter 五]、查詢快取

[codeigniter 五]、查詢快取

Jul 30, 2016 pm 01:31 PM
cache gt query this

資料庫快取類別

資料庫快取類別允許你把資料庫查詢結果保存在文字檔案中以減少資料庫存取。

重要

當快取啟用時,本類會被資料庫驅動自動載入,切勿手動載入。

重要

並非所有查詢結果都能被緩存,請仔細閱讀本頁內容。

啟用快取

啟用快取需要三步驟:

  • 在伺服器上建立一個可寫入的目錄以便保存快取檔案;
  • 透過檔案application/config/database.php 中的快取檔案;
  • 透過檔案application/config/database.php 中的 cachedir 參數設定其目錄路徑;
透過將檔案application/config/database.php 中的cache_on 參數設定為TRUE,也可以用下面的方法手動設定。

快取一旦啟用,每一次載入頁面時,只要該頁面含有資料庫查詢就會自動快取起來。

快取是如何運作的?

當你在造訪頁面時,CodeIgniter 的查詢快取系統會自動運作。如果快取被啟用,當頁面第一次載入時,查詢結果物件會被序列化並保存到伺服器上的一個文字檔案中。當下次再造訪該頁面時,會直接使用快取檔案而不用存取資料庫了,這樣,在已快取的頁面,你的資料庫存取會降為 0 。

只有讀取類型(SELECT)的查詢可以被緩存,因為只有這類查詢才會產生結果。寫入類型的查詢(INSERT、UPDATE 等)並不會產生結果,所以不會被快取。

快取檔案永不過期,所有的查詢只要快取下來以後除非你刪除它們否則將一直可用。你可以針對特定的頁面來刪除緩存,或者也可以清空掉所有的快取。一般來說,你可以在某些事件發生時(如資料庫中加入了資料)用下面的函數來清除快取。

快取能夠提升網站的效能嗎?

快取能否獲得效能增益,取決於許多因素。如果你有一個低負荷而高度優化的資料庫,你可能不會看到效能的提升。而如果你的資料庫正在被大量訪問,您可能會看到快取後的性有所提升,前提是你的檔案系統並沒有太多的開銷。要記住一點的是,快取只是簡單的改變了資料取得的途徑而已,從存取資料庫變成了存取檔案系統。

例如,在某些叢集伺服器環境中,由於檔案系統的操作太過頻繁,快取其實是有害的。在共享的單一伺服器環境中,快取才可能有益。不幸的是,關於是否需要快取你的資料庫這個問題並沒有唯一的答案,這完全取決於你的情況。

快取檔案是如何儲存的?

CodeIgniter 將每個查詢快取到它單獨的快取檔案中,根據所呼叫的控制器方法快取檔案被進一步組織到各自的子目錄中。更精確的說,子目錄是使用你 URI的前兩段(控制器名稱 和 方法名)命名的。

例如,你有一個 blog 控制器和一個 comments 方法,並含有三個不同的查詢。快取系統將建立一個名為 blog+comments 的目錄,並在該目錄下產生三個快取檔案。

如果你的URI 中含有動態查詢時(例如使用分頁時),每個查詢實例都會生成它單獨的快取文件,因此,最終可能會出現快取文件數是你頁面中的查詢次數的好幾倍這樣的情況。

管理你的快取檔案

由於快取檔案不會過期,那麼你的應用程式中應該有刪除快取的機制,例如,我們假設你有一個部落格並允許使用者評論,每當提交一個新評論時,你都應該刪除掉關於顯示評論的那個控制器方法對應的快取檔案。以下將介紹有兩種不同的方法用來刪除快取資料。

不是所有的資料庫方法都相容於快取

最後,我們必須得指出被快取的結果對像只是一個簡化版的結果對象,正因為這樣,有幾個查詢結果的方法無法使用。

    下面列出的方法是無法在快取的結果物件上使用的:
  • num_fields()
  • field_names()
  • field_data()
free_result()

field_data()

free_result()

id 也無法使用,因為這兩個id只適用於即時的資料庫操作。

函數參考


$this->db->cache_on() / $this->db->cache_off()

用於手動啟用/禁用緩存,當你不想緩存某些查詢時,這兩個方法會很有用。範例:

// Turn caching on
$this->db->cache_on();
$query = $this->db->query("SELECT * FROM mytable");

// Turn caching off for this one query
$this->db->cache_off();
$query = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'");

// Turn caching back on
$this->db->cache_on();
$query = $this->db->query("SELECT * FROM another_table");
登入後複製

$this->db->cache_delete()


刪除特定頁面的快取文件,這當你更新你的資料庫之後需要清除快取時很有用。

🎜快取系統根據你造訪頁面的URI 來將快取寫入到對應的快取檔案中去,例如,如果你在造訪example.com/index.php/blog/comments 這個頁面,快取系統會將快取檔案保存到blog+comments 目錄下,要刪除這些快取文件,你可以使用:🎜🎜
$this->db->cache_delete('blog', 'comments');
登入後複製
🎜🎜

如果你没提供任何参数,将会清除当前 URI 对应的缓存文件。

$this->db->cache_delete_all()

清除所有的缓存文件,例如:

$this->db->cache_delete_all();
登入後複製

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了[codeigniter 五]、查询缓存,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

華為GT3 Pro和GT4的差異是什麼? 華為GT3 Pro和GT4的差異是什麼? Dec 29, 2023 pm 02:27 PM

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質是藍寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結果會更加的精準。 GT3pro:多了ECG心電圖和血管及安

入職後,我才明白什麼叫Cache 入職後,我才明白什麼叫Cache Jul 31, 2023 pm 04:03 PM

事情其實是這樣的,當時領導者交給我一個perf硬體效能監視的任務,在使用perf的過程中,輸入指令perf list,我看到了以下資訊:我的任務就要讓這些cache事件能夠正常計數,但重點是,我根本不知道這些misses、loads是什麼意思。

修復:截圖工具在 Windows 11 中不起作用 修復:截圖工具在 Windows 11 中不起作用 Aug 24, 2023 am 09:48 AM

為什麼截圖工具在Windows11上不起作用了解問題的根本原因有助於找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對焦助手已開啟:這可以防止截圖工具開啟。應用程式損壞:如果截圖工具在啟動時崩潰,則可能已損壞。過時的圖形驅動程式:不相容的驅動程式可能會幹擾截圖工具。來自其他應用程式的干擾:其他正在運行的應用程式可能與截圖工具衝突。憑證已過期:升級過程中的錯誤可能會導致此issu簡單的解決方案這些適合大多數用戶,不需要任何特殊的技術知識。 1.更新視窗與Microsoft應用程式商店應用程

使用cache可以提高計算機運行速度這是因為什麼 使用cache可以提高計算機運行速度這是因為什麼 Dec 09, 2020 am 11:28 AM

使用cache可以提高電腦運行速度這是因為Cache縮短了CPU的等待時間。 Cache是​​位於CPU和主記憶體DRAM之間,規模較小,但速度很高的記憶體。 Cache的功能是提高CPU資料輸入輸出的速率;Cache容量小但速度快,記憶體速度較低但容量大,透過最佳化調度演算法,系統的效能會大幅提升。

如何透過拖曳放在Power Query中重新排序 如何透過拖曳放在Power Query中重新排序 Mar 14, 2024 am 10:55 AM

在這篇文章中,我們將向你們展示如何透過拖放在PowerQuery中重新排序多個欄位。通常,從各種來源匯入資料時,列可能不是所需的順序。重新排序列不僅允許您按照符合您的分析或報告需求的邏輯順序排列它們,還可以提高資料的可讀性,並加快過濾、排序和執行計算等任務。如何在Excel中重新排列多個列?在Excel中,重新排列列的方法有多種。您可以簡單地選擇列標題,然後將其拖曳到所需位置。但是,當處理包含許多列的大表時,這種方法可能會變得繁瑣。為了更有效率地重新排列列,您可以使用增強查詢編輯器。透過增強查詢編

cache是​​什麼記憶體? cache是​​什麼記憶體? Nov 25, 2022 am 11:48 AM

cache叫做高速緩衝記憶體,是介於中央處理器與主記憶體之間的高速小容量記憶體,一般由高速SRAM構成;這種局部記憶體是面向CPU的,引進它是為減少或消除CPU與記憶體之間的速度差異對系統性能帶來的影響。 Cache容量小但速度快,記憶體速度較低但容量大,透過最佳化調度演算法,系統的效能會大幅提升。

cache、rom、ram的特徵是什麼 cache、rom、ram的特徵是什麼 Aug 26, 2022 pm 04:05 PM

cache的特性:在CPU與主記憶體之間設定的一級或兩級高速小容量記憶體,其資訊是隨著電腦的斷電自然遺失。 ROM的特性:只能從記憶體讀取數據,而不能往裡面寫訊息,電腦斷電後數據仍然存在。 ram的特點:既可以從記憶體讀取數據,也可以到記憶體中寫入資訊;用於存放運行程式所需的命令、程式和資料等;電腦斷電後資訊自然遺失。

nginx反向代理快取教學。 nginx反向代理快取教學。 Feb 18, 2024 pm 04:48 PM

以下是nginx反向代理快取的教學:安裝nginx:sudoaptupdatesudoaptinstallnginx設定反向代理:開啟nginx設定檔:sudonano/etc/nginx/nginx.conf在http區塊中加入以下設定來啟用快取:http{...proxy_cache_path /var/cache/nginxlevels=1:2keys_zone=my_cache:10mmax_size=10ginactive=60muse_temp_path=off;proxy_cache

See all articles