欢迎来到魔豆IT网-IT综合知识分析平台

详细解释PHP网页缓存技术的优势和代码示例

2020-08-01 23:31:01栏目 : 网络编程围观 : 3次

前台统计:动态页面被解析并保存为静态页面

文件缓存:将查询结果保存为文件和XML

内存缓存:memcache

Php缓存:XCache、eaccelerator等

Memcache是一个高性能的分布式内存对象缓存系统,通过在内存中维护一个统一的大型哈希表,可以用来存储各种格式的数据,包括图像、视频、文件和数据库检索结果。简而言之,数据被调入内存,然后从内存中读取,从而大大提高了读取速度。Memcache是danga的一个项目,最初由LiveJournal提供服务。它最初是为了加快LiveJournal的访问速度而开发的,后来被许多大型网站采用。Memcached作为一个守护进程在一个或多个服务器上运行,并随时接收客户端的连接和操作。

XCache是一个开源的操作码缓冲/优化器,这意味着它可以提高PHP在您的服务器上的性能。它可以将编译后的PHP数据缓冲到共享内存中,避免重复编译过程,并且可以直接使用缓冲区中的编译代码来提高速度。它通常可以将页面生成速率提高2到5倍,并降低服务器负载。

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

1.通用缓存技术:

数据缓存:这里的数据缓存指的是数据库查询PHP缓存机制。每次访问一个页面时,您都会首先检查相应的缓存数据是否存在。如果它不存在,您将连接到数据库以获取数据,序列化查询结果并将它们保存到文件中。将来将直接从缓存的表或文件中获得相同的查询结果。

用最广泛使用的例子来看Discuz的搜索功能,将结果标识缓存到一个表中,下次搜索相同的关键字时,先搜索缓存表。

例如,当关联多个表时,附加表中的内容将生成一个数组,并保存在主表的字段中。如果需要,可以分解数组。这种方法的优点是只读取一个表,但缺点是需要更多的步骤来同步这两个数据。数据库将永远是瓶颈。关键是要改变硬盘的速度。

2.页面缓存:

每次访问一个页面,首先要检查相应的缓存页面文件是否存在。如果它不存在,您将连接到数据库,获取数据,同时显示页面并生成缓存页面文件,以便页面文件在下次访问时发挥作用。(互联网上常见的模板引擎和一些PHP缓存机制类通常都有这个功能。(

3.时间触发缓存:

检查文件是否存在,时间戳是否小于设置的到期时间。如果文件的修改时间戳大于当前时间戳减去到期时间戳,请使用缓存,否则请更新缓存。

4.内容触发缓存:

当插入数据或更新数据时,PHP缓存机制被强制更新。

5.静态缓存:

这里提到的静态缓存指的是静态化,它直接生成文本文件,如超文本标记语言或可扩展标记语言,并在更新时重新生成它们,这适用于变化不大的页面,所以我就不讨论了。

以上内容是代码级解决方案。我懒得直接改变其他框架。内容几乎是相同的,这很容易做到,并且它将被以几种方式使用,但是下面的内容是服务器端缓存方案,它是非代码级的。这只能通过多党合作来实现

6.内存缓存:

Memcached是一个高性能的分布式内存对象PHP缓存机制系统,用于降低动态应用中的数据库负载和提高访问速度。

7.php缓冲区:

有加速器,apc,phpa,xcache,让我们不要谈论这个,搜索一堆它们,自己看看,知道有这个东西,好吗

8.MYSQL缓存:

这也是非代码级的,经典数据库就是这样。看看下面的运行时间,0.09xxx等等

9.基于反向代理的Web缓存;

比如Nginx,SQUID,mod_proxy(在Apache 2之上,它被分为mod _ proxy和mod_cache)

10.DNS轮询:

BIND是一个开源的域名系统服务器软件,这很难说。自己去寻找,每个人都会知道它的存在。

我知道中国缓存和其他大型电视台都是这样做的。简而言之,它是多服务器的,将相同的页面或文件缓存到不同的服务器上,并根据南北方向自动解析到相关的服务器上。

PHP网页缓存示例

Ob_start():页面缓存开始的符号。此函数的内容保存在页面缓存中,直到ob_end_flush()或ob _ end _ clean();Ob_get_contents():用于获取页面缓存中的内容。得到它后,我们可以考虑如何处理这些内容,过滤字段并匹配内容。它可以是~ ~ ~:) Ob _ end _ flush():指示页面缓存的结束。在我验证之后,缓存的内容将被输出到当前页面,也就是说,缓存的内容可以被显示。有了这三个php函数,就可以实现强大的功能。如果有大量的数据库查询,缓存可以用来解决这个问题。

首先,设置到期时间。如果缓存文件需要在2小时后过期,您可以将缓存时间设置为3600 * 2。使用filectime()获取缓存文件的创建时间(或file time()获取修改时间)。如果文件的当前时间和创建时间超过了限定的过期时间,您可以使用上述三个函数首先从数据库中获取数据,然后开始缓存ob_start(),然后在缓存中写入要生成的页面的html代码,并在缓存后通过ob_get_contents()获取缓存的内容。

如果没有过期,可以直接读取缓存中的静态页面,从而避免大量的数据库访问。

<。?php $ _ time = 10$dir="。d:\ PHP \ \ & quot。;函数cache_start($_time,$dir){ $cachefile = $dir。& # 39;/& # 39;. sha1($ _ SERVER[& # 39;请求_ URI & # 39;])。& # 39;。html & # 39;$ cachetime = $ _ timeob _ start();如果(file_exists($cachefile)和amp&。(时间()-文件时间($cachefile) <。$ cache time){ include($ cache file);ob _ end _ flush();出口;}}函数cache _ end($ dir){ $ cache file = $ dir。& # 39;/& # 39;. sha1($ _ SERVER[& # 39;请求_ URI & # 39;])。& # 39;。html & # 39;$fp = fopen($cachefile,& # 39;w & # 39);fwrite($fp,ob _ get _ contents());fc lose(FP美元);ob _ end _ flush();} cache_start($_time,$ dir);//下面是输出内容,它被放在($i=0)的cache_start和cache_end方法之间;$i<。5 .$ i++) { echo $ I;睡眠(1);} cache _ end($ dir);?>。相关学习建议:从入门到精通的PHP编程

以上是对PHP网络缓存技术的优势的详细解释,以及代码示例的细节

展开剩余内容

分享到:

猜你喜欢

  • PPT制作动画常用的障眼法技巧

    所谓障眼法,即转移你的视线和注意力,达到我想要的效果。换句话说,欺骗你的眼睛。常见于魔术中,背地里做些“手脚”,让你信以为真,哈哈。举个例子,我们看到的是白色的小球飞入画面中心...

    2020-08-05
  • 怎么自定义PPT的幻灯片页面大小?

    我们在使用幻灯片的时候,一般都使用默认的页面大小,但其实微软也为我们提供了可以自定义的方式。今天小编和大家一起来学习如何自定义演示文稿的页面设置。切换到【设计】选项卡,在【自定...

    2020-08-05
  • PPT怎么设计一个数字倒计时效果的动画

    PPT怎么设计一个数字倒计时效果的动画?ppt中想要制作一个321倒计时动画,该怎么制作这个效果呢?下面我们就来看看ppt倒计时动画的制作方法,需要的朋友可以参考下1、首先,在...

    2020-08-05
  • 腾讯竟申请新商标“良心云” 网友忍俊不禁:玩梗都能当真

    之前曾有竞争对手吐槽腾讯,旗下云服务套路太多,为了讽刺的更彻底,友商还申请了“套路云”的商标,当然企鹅也不是吃素的。从公布的申请商标细节看,腾讯公司竟然向国家知识产权商标局申请...

    2020-08-05
热门标签