Home >Backend Development >PHP Tutorial >Share several common methods of page staticization, share several common page staticization_PHP tutorial
What is PHP staticization
A simple understanding of PHP staticization is to make the website-generated pages appear in front of visitors in the form of static HTML. PHP staticization is divided into pure staticization and pseudo-staticization. The difference between the two lies in the different processing mechanisms for PHP to generate static pages.
Why make web pages static
1. Speed up page opening and browsing speed. Static pages do not need to connect to the database and are significantly faster than dynamic pages;
2. It is beneficial to search engine optimization (SEO). Baidu and Google will give priority to including static pages, which will not only be included quickly but also fully included;
3. Reduce the burden on the server and browse the web without calling the system database;
4. The website is more secure, and HTML pages will not be affected by PHP-related vulnerabilities; if you look at larger websites, they are basically static pages, and they can reduce attacks and prevent SQL injection.
When a database error occurs, normal access to the website will not be affected.
Although generating html articles is more troublesome in operation and more complicated in procedures, these sacrifices are still worth it in order to be more convenient for search, faster and safer.
How to generate static HTML pages with PHP
Generate static pages using PHP templates
It is very convenient to achieve staticization of PHP templates. For example, you can install and use PHP Smarty to achieve static website. You can also write your own set of template parsing rules. Common template rules can imitate various CMS templates.
1. Use PHP file reading and writing functions and ob caching mechanism to generate static pages
For example, the dynamic details page address of a certain product is: http://xxx.com?goods.php?gid=112
So here we read the content of this details page based on this address, and then save it as a static page. Next time someone visits the dynamic address of this product details page, we can
Directly output the corresponding static content file that has been generated.
<!--?php $gid = $_GET['gid']+0;//商品id $goods_statis_file = "goods_file_".$gid.".html";//对应静态页文件 $expr = 3600*24*10;//静态文件有效期,十天 if(file_exists($goods_statis_file)){ $file_ctime =filectime($goods_statis_file);//文件创建时间 if($file_ctime+$expr-->time()){//如果没过期 echo file_get_contents($goods_statis_file);//输出静态文件内容 exit; }else{//如果已过期 unlink($goods_statis_file);//删除过期的静态页文件 ob_start(); //从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板 $content = ob_get_contents();//把详情页内容赋值给$content变量 file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中 ob_end_flush();//输出商品详情页信息 } }else{ ob_start(); //从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板 $content = ob_get_contents();//把详情页内容赋值给$content变量 file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中 ob_end_flush();//输出商品详情页信息 } ?>
2. Use nosql to read content from memory (in fact, this is no longer static but cached);
Take memcache as an example:
<!--?php $gid = $_GET['gid']+0;//商品id $goods_statis_content = "goods_content_".$gid;//对应键 $expr = 3600*24*10;//有效期,十天 $mem = new Memcache; $mem--->connect('memcache_host', 11211); $mem_goods_content = $mem->get($goods_statis_content); if($mem_goods_content){ echo $mem_goods_content; }else{ ob_start(); //从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板 $content = ob_get_contents();//把详情页内容赋值给$content变量 $mem->add($goods_statis_content,$content, false, $expr); ob_end_flush();//输出商品详情页信息 } ?>
Memcached has a one-to-one correspondence between keys and values. The default key size cannot exceed 128 bytes, and the default value size is 1M. Therefore, the 1M size can meet the storage needs of most web pages.
The above are the related methods of page staticization. I hope it will be helpful to my friends