PHP代码实现web页面静态化的功能

Posted 核点点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP代码实现web页面静态化的功能相关的知识,希望对你有一定的参考价值。


在公网上做网站,总是希望百度搜索引擎能够尽量多的收录自己网站的页面,众所周知,搜索引擎更加喜欢抓取静态的页面,将动态页面静态化,特别是批量的将动态页面转换为静态页面,这除了是一个使用的问题,更是一个程序设计上的问题。在以往开发的网站后台中,我特地避开了静态化的功能开发,而通过伪静态的方式在实现。近期在clone一个老项目的时候,决定在代码中实现这个真正静态化的功能。

这里说到真正的静态化,是将动态网页通过浏览器模拟访问的方式保存为html的静态网页文件存放在哎服务器的根目录,可以通过绝对url直接访问到html网页。

上面的截图包含了一个完整的静态化操作的响应过程。点击“静态化”按钮,会调用页面的js脚本,启动一个与后端交互的ajax连接,由服务器后端完成静态化的动作,并将静态化的结果返回给前端网页,前端js接收到后端返回的信息后,根据控制流程做出可视化响应,比如弹出一个提示框。

在前端网页中的js动作设计中,运用到了一个递归的方法,使用递归来循环与服务器的请求,当然,每次请求传递的参数是不同的,目的是将参数下的所有数据条目转换为静态的html页面。

PHP代码实现web页面静态化的功能

在点击“静态化”按钮时,触发的是a_static方法,在这个方法中,根据响应控制流程启动a_static_s过程,这是一个递归的方法,这样设计的出发点是将大量的数据分页请求,减小服务器内存、cpu以及磁盘I/O的占用,虽然服务器端配置比较低,通过合适的程序设计来保证程序的稳定性和健壮性。


后端运用到了php语言的ob缓存机制,通过缓存来获取网页的内容。另外有几个文件的操作函数。

判断静态文件是否已经存在,使用:

file_exists

获取到的网页缓存内容写入到磁盘文件,使用:

file_put_contents

file_put_contents可以新建文件,但不能创建目录,因此需要写创建目录的代码:

PHP代码实现web页面静态化的功能

那么完整的后端代码如下:

由于代码篇幅太大,截图也没有完整截下来,算是主要的实现代码吧。

在服务器的指定目录,可以看到生成的静态html文件。

从数据的角度来看,对于一些不变的数据,以文件的形式保存下来,在查看的时候更加直观,另一方面将这些冷数据从数据库里删除,使得数据库里保存的总是最新的一少部分数据,可以保证查询语句是有比较高的性能。

通过静态化生成的文件,将作为下一次倒排索引搜索引擎试验的文本数据。

以上是关于PHP代码实现web页面静态化的功能的主要内容,如果未能解决你的问题,请参考以下文章

PHP静态化技术

静态化 - 真静态技术

html PHP代码片段: - AJAX基本示例:此代码演示了使用PHP和JavaScript实现的基本AJAX功能。

php实现页面静态化

分享常见的几种页面静态化的方法

PHP页面静态化