数据缓存是web开发中常用的一种性能优化方法。目前主要文件缓存或者数据库缓存两种形式,数据库缓存数据库不是什么不可能的事情,的确也是很好很重要的。我认为传统数据库主要是从业务层、模块设计等方面来考虑的,而缓存数据库主要是从实现层来设计的,主要是为了缓存常用的多表查询之类的。这里主要将的是文件缓存,网上很多资料了,这里我转载了一些原理资料。
Cache是“以空间换时间”策略的典型应用模式,是提高系统性能的一种重要方法。缓存的使用在大访问量的情况下能够极大的减少对数据库操作的次数,明显降低系统负荷提高系统性能。相比页面的缓存,结果集是一种“原始数据”不包含格式信息,数据量相对较小,而且可以再进行格式化,所以显得相当灵活。由于PHP是“一边编译一边执行”的脚本语言,某种程度上也提供了一种相当方便的结果集缓存使用方法——通过动态include相应的数据定义代码段的方式使用缓存。如果在“RamDisk”上建缓存的话,效率应该还可以得到进一步的提升。以下是一小段示例代码,供参考。
<span style="COLOR: #000000"><br><span style="COLOR: #0000bb"> <br></span><span style="COLOR: #ff8000">// load data with cache <br><br></span><span style="COLOR: #007700">function </span><span style="COLOR: #0000bb">load_data</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$id</span><span style="COLOR: #007700">,</span><span style="COLOR: #0000bb">$cache_lifetime</span><span style="COLOR: #007700">) { <br><br></span><span style="COLOR: #ff8000">// the return data <br><br></span><span style="COLOR: #0000bb">$data </span><span style="COLOR: #007700">= array(); <br><br></span><span style="COLOR: #ff8000">// make cache filename <br><br></span><span style="COLOR: #0000bb">$cache_filename </span><span style="COLOR: #007700">= </span><span style="COLOR: #0000bb">‘cache_‘</span><span style="COLOR: #007700">.</span><span style="COLOR: #0000bb">$id</span><span style="COLOR: #007700">.</span><span style="COLOR: #0000bb">‘</span><span style="COLOR: #007700">.</span><span style="COLOR: #0000bb">php‘</span><span style="COLOR: #007700">; <br><br></span><span style="COLOR: #ff8000">// check cache file‘s last modify time <br><br></span><span style="COLOR: #0000bb">$cache_filetime </span><span style="COLOR: #007700">= </span><span style="COLOR: #0000bb">filemtime</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$cache_filename</span><span style="COLOR: #007700">); <br><br>if (</span><span style="COLOR: #0000bb">time</span><span style="COLOR: #007700">() - </span><span style="COLOR: #0000bb">$cache_filetime </span><span style="COLOR: #007700"><span style="COLOR: #0000bb">$cache_lifetime</span><span style="COLOR: #007700">) { <br><br></span><span style="COLOR: #ff8000">//** the cache is not expire <br><br></span><span style="COLOR: #007700">include(</span><span style="COLOR: #0000bb">$cache_filename</span><span style="COLOR: #007700">); <br><br>} else { <br><br></span><span style="COLOR: #ff8000">//** the cache is expired <br><br>// load data from database <br><br>// ... <br><br></span><span style="COLOR: #007700">while (</span><span style="COLOR: #0000bb">$dbo</span><span style="COLOR: #007700">-></span><span style="COLOR: #0000bb">nextRecord</span><span style="COLOR: #007700">()) { <br><br></span><span style="COLOR: #ff8000">// $data[] = ... <br><br></span><span style="COLOR: #007700">} <br><br></span><span style="COLOR: #ff8000">// format the data as a php file <br><br></span><span style="COLOR: #0000bb">$data_cache </span><span style="COLOR: #007700">= </span><span style="COLOR: #dd0000">" <br><br>while (list($key, $val) = each($data)) { <br><br>$data_cache .= "</span><span style="COLOR: #0000bb">$data</span><span style="COLOR: #007700">[</span><span style="COLOR: #0000bb">‘$key‘</span><span style="COLOR: #007700">]=array(</span><span style="COLOR: #0000bb">‘</span><span style="COLOR: #dd0000">"; <br><br>$data_cache .= "</span><span style="COLOR: #0000bb">‘NAME‘</span><span style="COLOR: #007700">=></span><span style="COLOR: #dd0000">""</span><span style="COLOR: #007700">.</span><span style="COLOR: #0000bb">qoute</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$val</span><span style="COLOR: #007700">[</span><span style="COLOR: #0000bb">‘NAME‘</span><span style="COLOR: #007700">]).</span><span style="COLOR: #dd0000">"\"," <br><br></span><span style="COLOR: #0000bb">$data_cache </span><span style="COLOR: #007700">.= </span><span style="COLOR: #dd0000">"‘VALUE‘=>\""</span><span style="COLOR: #007700">.</span><span style="COLOR: #0000bb">qoute</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$val</span><span style="COLOR: #007700">[</span><span style="COLOR: #0000bb">‘VALUE‘</span><span style="COLOR: #007700">]).</span><span style="COLOR: #dd0000">"\"" <br><br></span><span style="COLOR: #0000bb">$data_cache </span><span style="COLOR: #007700">.= </span><span style="COLOR: #dd0000">";);\r\n"</span><span style="COLOR: #007700">; <br><br>} <br><br></span><span style="COLOR: #0000bb">$data_cache </span><span style="COLOR: #007700">= </span><span style="COLOR: #dd0000">"?>\r\n"</span><span style="COLOR: #007700">; <br><br></span><span style="COLOR: #ff8000">// save the data to the cache file <br><br></span><span style="COLOR: #007700">if (</span><span style="COLOR: #0000bb">$fd </span><span style="COLOR: #007700">= </span><span style="COLOR: #0000bb">fopen</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$cache_filename</span><span style="COLOR: #007700">,</span><span style="COLOR: #0000bb">‘w</span><span style="COLOR: #007700">+</span><span style="COLOR: #0000bb">‘</span><span style="COLOR: #007700">)) { <br><br></span><span style="COLOR: #0000bb">fputs</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$fd</span><span style="COLOR: #007700">,</span><span style="COLOR: #0000bb">$data_cache</span><span style="COLOR: #007700">); <br><br></span><span style="COLOR: #0000bb">fclose</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$fd</span><span style="COLOR: #007700">); <br><br>} <br><br>} <br><br>return </span><span style="COLOR: #0000bb">$data</span><span style="COLOR: #007700">; <br><br>} <br><br></span><span style="COLOR: #0000bb">?></span> <br><br></span></span>
适用情况:
1.数据相对比较稳定,主要是读取操作。
2.文件操作要比数据库操作快。
3.复杂数据访问,大数据量访问,密集数据访问,系统数据库负载极重。
4.Web/DB分离结构或者多Web单DB结构。
未经证实的问题:
1.并发访问时对文件的读写是否会引起锁定问题。
2.涉及到的数据文件太多时,性能如何。
扩展思路:
1.生成JavaScript数据定义代码,在客户端调用。
2.还未想到……
望共同探讨。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
