Home > Article > Backend Development > 1. Full page static caching
1. Full-page static caching
means that all pages are generated into html static pages. The static pages are directly accessed when users visit, without going through the PHP server parsing process. This method is more common in CMS systems, such as dedecms;
A more common implementation method is to use output caching:
<code><span>Ob_start<span>()<span><span>******要运行的代码*******<span>$content <span>=<span><span>Ob_get_contents<span>();<span><span>****将缓存内容写入<span>html<span>文件*****<span><span>Ob_end_clean<span>();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>
2. Page partial caching
This method is to cache infrequently changed pages on a page. The parts are statically cached, while frequently changing blocks are not cached and are finally assembled together for display; this can be achieved using a method similar to ob_get_contents, or a page fragment caching strategy such as ESI can be used to make it available in dynamic pages. Caching of relatively static fragment parts (ESI technology, please Baidu, not detailed here).
This method can be used for example, on product pages in the mall;
3. Data caching
As the name suggests, it is a way of caching data; for example, when requesting a certain product information in the mall using the product id , you will get data including store information, product information, etc. At this time, you can cache these data into a php file. The file name contains the product id to create a unique identifier; the next time someone wants to view this product, first Directly adjust the information in this file without querying the database; in fact, what is cached in the cache file is a php array or the like;
This method is used in the Ecmall mall system;
4. Query cache
In fact This is the same idea as data caching, which is to cache according to the query statement; cache the data obtained by the query in a file. When the same query is encountered next time, the data will be directly retrieved from this file without checking again. Database; but the cache file name here may need to be based on the query statement to establish a unique identifier;
Caching based on time changes
Actually, this is not a real caching method; the caching of 2, 3, and 4 above Technology generally uses time change judgment; that is, you need to set a valid time for cached files. Within this valid time, the same access will first fetch the contents of the cached file. However, if the set cache time is exceeded, you need to retrieve the content from the database again. Obtain data from it and produce the latest cache file; for example, I set the homepage of our mall to be updated every 2 hours;
5. Cache according to content changes
This is not an independent caching technology and needs to be used in combination; That is, when the database content is modified, the cache file is updated immediately;
For example, if a person traffic is a mall with a lot of products, the product table must be relatively large, and the pressure on this table is relatively heavy; we can display the product page Carry out page caching;
When the merchant modifies the product information in the background, click Save, and we will update the cache file at the same time; then, when the buyer accesses the product information, he actually accesses a static page without the need to Go to Access the database;
Just imagine, if the product page is not cached, then every time you access a product, you have to go to the database to check it. If 100,000 people browse the product online, the pressure on the server will be great;
6. In-memory caching
When it comes to this, the first thing you may think of is Memcached; Memcached is a high-performance distributed memory cache server. The general purpose of use is to reduce the number of database accesses by caching database query results to improve the speed and scalability of dynamic web applications.
It caches the information that needs to be cached into the system memory. When the information needs to be obtained, it is fetched directly from the memory; the more commonly used method is the key–>value method;
<code><span><span>php $memcachehost <span>=<span><span>'192.168.6.191'<span>;<span> $memcacheport <span>=<span><span>11211<span>;<span> $memcachelife <span>=<span><span>60<span>;<span> $memcache <span>=<span><span>new<span><span>Memcache<span>;<span> $memcache<span>-><span>connect<span>(<span>$memcachehost<span>,<span>$memcacheport<span>)<span><span>or<span><span>die<span><span>(<span>"Could not connect"<span>);<span> $memcache<span>-><span>set<span>(<span>'key'<span>,<span>'缓存的内容'<span>);<span> $get <span>=<span> $memcache<span>-><span>get<span>(<span>$key<span>);<span><span>//获取信息<span><span>?></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>
7. apache cache module
apache After installation, it is not allowed to be cached. If an external cache or squid server requires web acceleration, it needs to be set in httpd.conf. Of course, the premise is that the mod_cache module must be activated when installing apache.
When installing apache: ./configure –enable-cache –enable-disk-cache –enable-mem-cache
8, php APC cache extension
Php has an APC cache extension, which is php_apc.dll under windows, which is required First load this module, and then configure it in php.ini:
<code><span>[<span>apc<span>]<span> extension<span>=<span>php_apc<span>.<span>dll apc<span>.<span>rfc1867 <span>=<span> on upload_max_filesize <span>=<span><span>100M<span> post_max_size <span>=<span><span>100M<span> apc<span>.<span>max_file_size <span>=<span><span>200M<span> upload_max_filesize <span>=<span><span>1000M<span> post_max_size <span>=<span><span>1000M<span> max_execution_time <span>=<span><span>600<span><span>;<span><span>每个<span>PHP<span>页面运行的最大时间值(秒),默认<span>30<span>秒<span> max_input_time <span>=<span><span>600<span><span>;<span><span>每个<span>PHP<span>页面接收数据所需的最大时间,默认<span>60<span> memory_limit <span>=<span><span>128M<span><span>;<span><span>每个<span>PHP<span>页面所吃掉的最大内存,默认<span>8M</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>
9. Opcode cache
We know that the execution process of php can be shown in the figure below:
First the php code is parsed into Tokens, and then Then compile it into Opcode code, and finally execute the Opcode code and return the result; therefore, for the same php file, the Opcode code can be cached when running for the first time. The next time you execute this page, you will directly find the opcode code in the cache. , execute the last step directly, and no longer need the intermediate steps.
The more well-known ones are XCache, Turck MM Cache, PHP Accelerator, etc.
Almighty programmer communication QQ group 290551701, gathering many Internet elites, technical directors, architects, project managers! Open source technology research, industry insiders, experts and novices who are interested in working in the IT industry are welcome to join!
The above has introduced 1. Full-page static caching, including aspects of the content. I hope it will be helpful to friends who are interested in PHP tutorials.