Home > Backend Development > PHP Tutorial > Detailed explanation of the advantages and code examples of PHP web page caching technology

Detailed explanation of the advantages and code examples of PHP web page caching technology

coldplay.xixi
Release: 2023-04-09 12:12:01
forward
2502 people have browsed it

Detailed explanation of the advantages and code examples of PHP web page caching technology

Static front-end: parse the dynamic page and save it as a static page

File cache: save the query result as a file, XML

Memory cache :memcache

php cache: It can be used to store data in various formats, including images, videos, files, and database search results. Simply put, the data is called into the memory and then read from the memory, thus greatly improving the reading speed. Memcache is a project of danga. It was first served by LiveJournal. It was originally developed to speed up LiveJournal access and was later adopted by many large websites. Memcached runs in one or more servers as a daemon and will receive client connections and operations at any time.

XCache is an open source opcode cache/optimizer, which means it can improve the performance of PHP on your server. It avoids repeated compilation processes by buffering the compiled PHP data into shared memory. Ability to directly use buffered compiled code to increase speed. Typically increases your page generation rate by 2 to 5 times, reducing server load.

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

1. Universal caching technology :

Data cache: The data cache mentioned here refers to the database query PHP cache mechanism. Every time a page is accessed, it will first detect whether the corresponding cached data exists. If it does not exist, connect The database obtains the data and serializes the query results and saves them to the file. In the future, the same query results are obtained directly from the cache table or file.

The most widely used example is the search function of Discuz, which caches the result ID into a table and searches the cache table first when searching for the same keyword next time.

As a common method, when multiple tables are associated, the contents in the attached table are generated into an array and saved in a field of the main table. When necessary, the array is decomposed. The advantage of this is that only one table can be read. , the disadvantage is that there will be many more steps to synchronize the two data. The database is always the bottleneck. Trading the hard disk for speed is the key point of this.

2. Page cache:

Every time you access a page, it will first detect whether the corresponding cached page file exists. If it does not exist, connect to the database and get Data, display the page and generate a cache page file at the same time, so that the page file will be effective the next time you visit. (Template engines and some common PHP caching mechanism classes on the Internet usually have this function)

3. Time-triggered caching:

Check whether the file exists and the timestamp is less than the setting The expiration time, if the file modification timestamp is greater than the current timestamp minus the expiration timestamp, then use the cache, otherwise update the cache.

4. Content-triggered caching:

When data is inserted or updated, the PHP cache mechanism is forced to be updated.

5. Static cache:

The static cache mentioned here refers to static, which directly generates text files such as HTML or XML, and regenerates them when there are updates. , suitable for pages that don’t change much, so I won’t talk about it here.

The above content is a code-level solution. I directly CP other frameworks and am too lazy to change them. The content is similar, it is easy to do, and can be used in several ways, but the following content is for the server End-end caching solution, non-code level, requires the cooperation of multiple parties to achieve

6. Memory cache:

Memcached is a high-performance, distributed memory Object PHP caching mechanism system is used to reduce database load and improve access speed in dynamic applications.

7. PHP buffer:

There are eaccelerator, apc, phpa, xcache, I won’t talk about these, just search a bunch of them yourself. Look, it’s OK if you know that this thing exists

8. MYSQL cache:

This is also considered non-code level. Classic databases use this method. Look at the running time below, 0.09xxx and the like

9. Web cache based on reverse proxy:

Such as Nginx, SQUID, mod_proxy (apache2 and above are divided into For mod_proxy and mod_cache)

10. DNS polling:

 
BIND is an open source DNS server software. This is a big deal to say. , search for it yourself, just know that this thing exists.


I know that some large websites such as chinacache do this. To put it simply, it is multi-server. The same page or file is cached on different servers, and the relevant pages are automatically parsed according to the north and south. in the server.

PHP web page caching example

  • 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.&#39;/&#39;.sha1($_SERVER[&#39;REQUEST_URI&#39;]).&#39;.html&#39;;
 $cachetime = $_time;
 ob_start();
 if(file_exists($cachefile) && (time()-filemtime($cachefile) < $cachetime))
 {
  include($cachefile);
  ob_end_flush();
  exit;
 }
}
 
function cache_end($dir)
{
 $cachefile = $dir.&#39;/&#39;.sha1($_SERVER[&#39;REQUEST_URI&#39;]).&#39;.html&#39;;
 $fp = fopen($cachefile, &#39;w&#39;);
 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);
?>
Copy after login

相关学习推荐:PHP编程从入门到精通

The above is the detailed content of Detailed explanation of the advantages and code examples of PHP web page caching technology. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:jb51.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template