Rumah pembangunan bahagian belakang tutorial php [codeigniter 五]、查询缓存

[codeigniter 五]、查询缓存

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

数据库缓存类

数据库缓存类允许你把数据库查询结果保存在文本文件中以减少数据库访问。

重要

当缓存启用时,本类会被数据库驱动自动加载,切勿手动加载。

重要

并非所有查询结果都能被缓存,请仔细阅读本页内容。

启用缓存

启用缓存需要三步:

  • 在服务器上创建一个可写的目录以便保存缓存文件;
  • 通过文件 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()

同时,result_id 和 conn_id 这两个 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");
Salin selepas log masuk

$this->db->cache_delete()

删除特定页面的缓存文件,这当你更新你的数据库之后需要清除缓存时很有用。

缓存系统根据你访问页面的 URI 来将缓存写入到相应的缓存文件中去,例如,如果你在访问 example.com/index.php/blog/comments 这个页面,缓存系统会将缓存文件保存到 blog+comments 目录下,要删除这些缓存文件,你可以使用:

$this->db->cache_delete('blog', 'comments');
Salin selepas log masuk

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

$this->db->cache_delete_all()

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

$this->db->cache_delete_all();
Salin selepas log masuk

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

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara Huawei GT3 Pro dan GT4? Apakah perbezaan antara Huawei GT3 Pro dan GT4? Dec 29, 2023 pm 02:27 PM

Ramai pengguna akan memilih jenama Huawei apabila memilih jam tangan pintar Antaranya, Huawei GT3pro dan GT4 adalah pilihan yang sangat popular. Apakah perbezaan antara Huawei GT3pro dan GT4? 1. Rupa GT4: 46mm dan 41mm, bahan cermin kaca + badan keluli tahan karat + cangkang belakang gentian resolusi tinggi. GT3pro: 46.6mm dan 42.9mm, bahannya ialah kaca nilam + badan titanium/badan seramik + cangkerang belakang seramik 2. GT4 yang sihat: Menggunakan algoritma Huawei Truseen5.5+ terkini, hasilnya akan lebih tepat. GT3pro: Penambahan elektrokardiogram ECG dan saluran darah serta keselamatan

Selepas menyertai syarikat itu, saya faham apa itu Cache Selepas menyertai syarikat itu, saya faham apa itu Cache Jul 31, 2023 pm 04:03 PM

Perkara itu sebenarnya seperti ini Pada masa itu, ketua saya memberi saya tugas pemantauan prestasi perkakasan Semasa proses menggunakan perf, saya memasukkan senarai perf arahan dan saya melihat maklumat berikut: Tugas saya adalah untuk membolehkan peristiwa cache ini. untuk dikira secara normal. Tetapi intinya, saya tidak tahu apa maksud kehilangan dan beban ini.

Betulkan: Alat snipping tidak berfungsi dalam Windows 11 Betulkan: Alat snipping tidak berfungsi dalam Windows 11 Aug 24, 2023 am 09:48 AM

Mengapa Alat Snipping Tidak Berfungsi pada Windows 11 Memahami punca masalah boleh membantu mencari penyelesaian yang betul. Berikut ialah sebab utama Alat Snipping mungkin tidak berfungsi dengan betul: Focus Assistant dihidupkan: Ini menghalang Snipping Tool daripada dibuka. Aplikasi rosak: Jika alat snipping ranap semasa pelancaran, ia mungkin rosak. Pemacu grafik lapuk: Pemacu yang tidak serasi mungkin mengganggu alat snipping. Gangguan daripada aplikasi lain: Aplikasi lain yang sedang berjalan mungkin bercanggah dengan Alat Snipping. Sijil telah tamat tempoh: Ralat semasa proses naik taraf boleh menyebabkan penyelesaian mudah ini sesuai untuk kebanyakan pengguna dan tidak memerlukan sebarang pengetahuan teknikal khusus. 1. Kemas kini apl Windows dan Microsoft Store

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

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

Cara menyusun semula berbilang lajur dalam Power Query melalui seret dan lepas Cara menyusun semula berbilang lajur dalam Power Query melalui seret dan lepas Mar 14, 2024 am 10:55 AM

Dalam artikel ini, kami akan menunjukkan kepada anda cara menyusun semula berbilang lajur dalam PowerQuery dengan menyeret dan melepaskan. Selalunya, apabila mengimport data daripada pelbagai sumber, lajur mungkin tidak berada dalam susunan yang diingini. Menyusun semula lajur bukan sahaja membolehkan anda menyusunnya dalam susunan logik yang sesuai dengan keperluan analisis atau pelaporan anda, ia juga meningkatkan kebolehbacaan data anda dan mempercepatkan tugas seperti menapis, mengisih dan melakukan pengiraan. Bagaimana untuk menyusun semula berbilang lajur dalam Excel? Terdapat banyak cara untuk menyusun semula lajur dalam Excel. Anda hanya boleh memilih pengepala lajur dan seret ke lokasi yang dikehendaki. Walau bagaimanapun, pendekatan ini boleh menjadi rumit apabila berurusan dengan jadual besar dengan banyak lajur. Untuk menyusun semula lajur dengan lebih cekap, anda boleh menggunakan editor pertanyaan yang dipertingkatkan. Mempertingkatkan pertanyaan

Apakah cache? Apakah cache? Nov 25, 2022 am 11:48 AM

Cache dipanggil memori cache Ia adalah memori berkapasiti kecil berkelajuan tinggi antara unit pemprosesan pusat dan memori utama Ia biasanya terdiri daripada memori tempatan jenis ini untuk mengurangkan atau menghapuskan jurang antara CPU dan memori Kesan perbezaan kelajuan antara mereka terhadap prestasi sistem. Kapasiti cache kecil tetapi pantas, kelajuan memori rendah tetapi kapasiti besar Dengan mengoptimumkan algoritma penjadualan, prestasi sistem akan bertambah baik.

Pemalam pangkalan data React Query: cara mengimport dan mengeksport data Pemalam pangkalan data React Query: cara mengimport dan mengeksport data Sep 26, 2023 pm 05:37 PM

Pemalam pangkalan data ReactQuery: Kaedah untuk melaksanakan import dan eksport data, contoh kod khusus diperlukan Dengan aplikasi ReactQuery yang meluas dalam pembangunan bahagian hadapan, semakin ramai pembangun mula menggunakannya untuk mengurus data. Dalam pembangunan sebenar, kita selalunya perlu mengeksport data ke fail tempatan atau mengimport data daripada fail tempatan ke dalam pangkalan data. Untuk melaksanakan fungsi ini dengan lebih mudah, anda boleh menggunakan pemalam pangkalan data ReactQuery. Pemalam pangkalan data ReactQuery menyediakan satu siri kaedah

tutorial caching proksi terbalik nginx. tutorial caching proksi terbalik nginx. Feb 18, 2024 pm 04:48 PM

Berikut ialah tutorial untuk caching proksi terbalik nginx: Pasang nginx: sudoaptupdatesudoaptinstallnginx Konfigurasikan proksi terbalik: Buka fail konfigurasi nginx: sudonano/etc/nginx/nginx.conf Tambah konfigurasi berikut dalam blok http untuk mendayakan caching: http{...proxy_cache_path /var/cache/nginxlevels=1:2keys_zone=my_cache:10mmax_size=10ginactive=60muse_temp_path=off;proxy_cache

See all articles