hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 后端开发 - 正文 君子好学,自强不息!

详解PHP网页缓存手艺长处及代码实例_后端开发

2020-08-02后端开发搜奇网3°c
A+ A-

前台静态化:把动态页面剖析后保存为静态页面

文件缓存:把查询效果保存为文件,XML

内存缓存:memcache

php缓存器:XCache、eaccelerator等

Memcache是一个高机能的分布式的内存对象缓存体系,经由历程在内存里保护一个一致的庞大的hash表,它能够用来存储种种花样的数据,包含图象、视频、文件以及数据库检索的效果等。简朴的说就是将数据调用到内存中,然后从内存中读取,从而大大进步读取速度。  Memcache是danga的一个项目,最早是LiveJournal 效劳的,最初为了加快 LiveJournal 接见速度而开发的,厥后被许多大型的网站采纳。  Memcached是以保卫程序体式格局运转于一个或多个效劳器中,随时会吸收客户端的衔接和操纵。

XCache 是一个开源的 opcode 缓存器/优化器, 这意味着他能够进步您效劳器上的 PHP 机能. 他经由历程把编译 PHP 后的数据缓冲到同享内存从而防止反复的编译历程, 能够直接运用缓冲区已编译的代码从而进步速度. 一般能够进步您的页面生成速度 2 到5 倍, 下降效劳器负载.

******************************************************************************************************************************************************

1、广泛缓存手艺:

  数据缓存:这里所说的数据缓存是指数据库查询PHP缓存机制,每次接见页面的时刻,都邑先检测响应的缓存数据是不是存在,假如不存在,就衔接数据库,取得数据,并把查询效果序列化后保存到文件中,今后一样的查询效果就直接从缓存表或文件中取得。

  用的最广的例子看Discuz的搜刮功用,把效果ID缓存到一个表中,下次搜刮雷同症结字时先搜刮缓存表。

  举个经常使用的要领,多表关联的时刻,把附表中的内容生成数组保存到主表的一个字段中,须要的时刻数组剖析一下,如许的长处是只读一个表,害处就是两个数据同步会多不少步骤,数据库永远是瓶颈,用硬盘换速度,是这个的症结点。

2、 页面缓存:

  每次接见页面的时刻,都邑先检测响应的缓存页面文件是不是存在,假如不存在,就衔接数据库,取得数据,显现页面并同时生成缓存页面文件,如许下次接见的时刻页面文件就发挥作用了。(模板引擎和网上罕见的一些PHP缓存机制类一般有此功用)

3、 时候触发缓存:

   搜检文件是不是存在而且时候戳小于设置的逾期时候,假如文件修正的时候戳比当前时候戳减去逾期时候戳大,那末就用缓存,不然更新缓存。

4、 内容触发缓存:

   当插进去数据或更新数据时,强迫更新PHP缓存机制。

5、 静态缓存:

  这里所说的静态缓存是指静态化,直接生成HTML或XML等文本文件,有更新的时刻重生成一次,适合于不太变化的页面,这就不说了。

以上内容是代码级的处理计划,我直接CP别的框架,也懒得改,内容都差不多,很轻易就做到,而且会几种体式格局一升引,但下面的内容是效劳器端的缓存计划,非代码级的,要有多方的协作才做到

6、 内存缓存:

  Memcached是高机能的,分布式的内存对象PHP缓存机制体系,用于在动态运用中削减数据库负载,提拔接见速度。

7、 php的缓冲器:

   有eaccelerator, apc, phpa,xcache,这个这个就不说了吧,搜刮一堆一堆的,本身看啦,晓得有这玩意就OK

8、 MYSQL缓存:

  这也算非代码级的,典范的数据库就是用的这类体式格局,看下面的运转时候,0.09xxx之类的

9、 基于反向代办的Web缓存:

   如Nginx,SQUID,mod_proxy(apache2以上又分为mod_proxy和mod_cache)

10、 DNS轮询:  

  BIND是一款开放源码的DNS效劳器软件,这个要说起来就大了,本身搜刮去,人人晓得有这个东西就好了。

  我晓得的有chinacache等大站就是如许做的,说简朴点就是多效劳器啦,把同一个页面或文件缓存到差别的效劳器上,按南北自动剖析到相干的效劳器中。

PHP网页缓存实例

  • ob_start():页面缓存入手下手的标志,此函数一下的内容直至ob_end_flush()或许ob_end_clean()都保存在页面缓存中;
  • ob_get_contents():用来猎取页面缓存中的内容,猎取到今后呢,我们就能够想怎样处置惩罚这些内容都行了,过滤字段啦,婚配内容啦,都能够~~~ :)
  • ob_end_flush():示意页面缓存完毕。而且经我考证,缓存的内容将输出到当前页面上,也就是能够显现缓存内容。

用此三个php函数,就能够完成壮大的功用。假如数据库查询量较大,能够用cache来处理这个问题。

起首,设定逾期时候,假如请求缓存文件2个小时逾期,就能够设定cache_time为3600*2;经由历程filectime()来猎取缓存文件的建立时候(或 filemtime()猎取修正时候),假如当前时候跟文件的建立时候凌驾限制的逾期时候,就能够经由历程上面三个函数,起首从数据库中掏出数据,然后入手下手缓存ob_start(),然后把要生成的页面的html代码写在缓存中,缓存完毕后经由历程ob_get_contents()猎取到缓存的内容,然后经由历程fwrite把缓存内容写到静态页面html。

假如未逾期,直接读取cache中的静态页面即可,防止了大批的数据库接见。

<?php
$_time =10;
$dir="D:\\php\\";
 
function cache_start($_time, $dir)
{
 $cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html';
 $cachetime = $_time;
 ob_start();
 if(file_exists($cachefile) && (time()-filemtime($cachefile) < $cachetime))
 {
  include($cachefile);
  ob_end_flush();
  exit;
 }
}
 
function cache_end($dir)
{
 $cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html';
 $fp = fopen($cachefile, 'w');
 fwrite($fp, ob_get_contents());
 fclose($fp);
 ob_end_flush();
}
 
cache_start($_time, $dir);
//以下是输出的内容,放在cache_start和cache_end两个要领之间
for ($i=0;$i<5;$i++)
{
 echo $i;
 sleep(1);
}
cache_end($dir);
?>

相干进修引荐:PHP编程从入门到通晓

以上就是详解PHP网页缓存手艺长处及代码实例的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
详解PHP网页缓存手艺长处及代码实例_后端开发

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章

本文来源:搜奇网

本文地址:https://www.sou7.cn/298776.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。