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

資料庫快取類別

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

重要

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

重要

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

啟用快取

啟用快取需要三步驟:

  • 在伺服器上建立一個可寫入的目錄以便保存快取檔案;
  • 透過檔案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
华为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心电图和血管及安

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

为什么截图工具在Windows11上不起作用了解问题的根本原因有助于找到正确的解决方案。以下是截图工具可能无法正常工作的主要原因:对焦助手已打开:这可以防止截图工具打开。应用程序损坏:如果截图工具在启动时崩溃,则可能已损坏。过时的图形驱动程序:不兼容的驱动程序可能会干扰截图工具。来自其他应用程序的干扰:其他正在运行的应用程序可能与截图工具冲突。证书已过期:升级过程中的错误可能会导致此issu简单的解决方案这些适合大多数用户,不需要任何特殊的技术知识。1.更新窗口和Microsoft应用商店应用程

入职后,我才明白什么叫Cache入职后,我才明白什么叫CacheJul 31, 2023 pm 04:03 PM

事情其实是这样的,当时领导交给我一个perf硬件性能监视的任务,在使用perf的过程中,输入命令perf list,我看到了以下信息:我的任务就要让这些cache事件能够正常计数,但关键是,我根本不知道这些misses、loads是什么意思。

如何修复无法连接到iPhone上的App Store错误如何修复无法连接到iPhone上的App Store错误Jul 29, 2023 am 08:22 AM

第1部分:初始故障排除步骤检查苹果的系统状态:在深入研究复杂的解决方案之前,让我们从基础知识开始。问题可能不在于您的设备;苹果的服务器可能会关闭。访问Apple的系统状态页面,查看AppStore是否正常工作。如果有问题,您所能做的就是等待Apple修复它。检查您的互联网连接:确保您拥有稳定的互联网连接,因为“无法连接到AppStore”问题有时可归因于连接不良。尝试在Wi-Fi和移动数据之间切换或重置网络设置(“常规”>“重置”>“重置网络设置”>设置)。更新您的iOS版本:

如何通过拖放在Power Query中对多列进行重新排序如何通过拖放在Power Query中对多列进行重新排序Mar 14, 2024 am 10:55 AM

在这篇文章中,我们将向你展示如何通过拖放在PowerQuery中对多列进行重新排序。通常,从各种来源导入数据时,列可能不是所需的顺序。重新排序列不仅允许您按照符合您的分析或报告需求的逻辑顺序排列它们,还可以提高数据的可读性,并加快过滤、排序和执行计算等任务。如何在Excel中重新排列多个列?在Excel中,重新排列列的方法有多种。您可以简单地选择列标题,然后将其拖动到所需位置。但是,当处理包含许多列的大表时,这种方法可能会变得繁琐。为了更高效地重新排列列,您可以使用增强查询编辑器。通过增强查询编

React Query 数据库插件:实现数据导入和导出的方法React Query 数据库插件:实现数据导入和导出的方法Sep 26, 2023 pm 05:37 PM

ReactQuery数据库插件:实现数据导入和导出的方法,需要具体代码示例随着ReactQuery在前端开发中的广泛应用,越来越多的开发者开始使用它来管理数据。而在实际开发中,我们经常需要将数据导出到本地文件或从本地文件导入数据到数据库中。为了更方便地实现这些功能,可以使用ReactQuery数据库插件。ReactQuery数据库插件提供了一系列方

使用cache可以提高计算机运行速度这是因为什么使用cache可以提高计算机运行速度这是因为什么Dec 09, 2020 am 11:28 AM

使用cache可以提高计算机运行速度这是因为Cache缩短了CPU的等待时间。Cache是位于CPU和主存储器DRAM之间,规模较小,但速度很高的存储器。Cache的功能是提高CPU数据输入输出的速率;Cache容量小但速度快,内存速度较低但容量大,通过优化调度算法,系统的性能会大大改善。

cache是什么存储器?cache是什么存储器?Nov 25, 2022 am 11:48 AM

cache叫做高速缓冲存储器,是介于中央处理器和主存储器之间的高速小容量存储器,一般由高速SRAM构成;这种局部存储器是面向CPU的,引入它是为减小或消除CPU与内存之间的速度差异对系统性能带来的影响。Cache容量小但速度快,内存速度较低但容量大,通过优化调度算法,系统的性能会大大改善。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

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

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境