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
用此三个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编程从入门到精通
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!