网页内容抓取 php(纯静态网站在网站中是和服务器怎么实现的??)
优采云 发布时间: 2021-12-27 02:08网页内容抓取 php(纯静态网站在网站中是和服务器怎么实现的??)
随着网站内容和用户访问量的增加,网站加载速度不可避免地会越来越慢。由于带宽的限制和同时服务器请求的数量,我们经常需要对网站进行代码和服务器配置的优化。
一般情况下会从以下几个方面进行优化
1、静态动态页面
2、优化数据库
3、使用负载均衡
4、使用缓存
5、使用CDN加速
现在很多网站在建设过程中都必须进行静态处理。为什么网站需要静态处理?我们都知道纯静态网站是所有网页都是独立的html页面。我们访问的时候,可以直接读取文件,无需数据处理。访问速度可想而知,对搜索很有用。引擎也是一种非常友好的方式。
纯静态网站如何在网站中实现?
纯静态制作技术是先对网站的页面进行汇总,分成几种样式,然后将这些页面制作成模板。生成时需要先读取源文件,然后生成一个.html结尾的独立页面文件。因此,一个纯静态的网站需要更多的空间,但实际上,所需要的空间并不多,尤其是中小型企业网站。从技术上讲,大型网站实现全站纯静态更为重要。难度大,世代时间太长。但是,中小型网站还是做纯静态比较,这样做的好处很多。
而动态网站又是如何进行静态处理的呢?
页面静态就是把动态页面变成html/htm静态页面。动态页面一般采用asp、php、jsp、.net等编程语言编写,非常易于管理。但是,在访问网页时,程序需要先对其进行处理,因此访问速度相对较慢。静态页面访问速度快,但不易管理。那么静态动态页面就可以将两种页面的优点结合起来。
静态处理给网站带来什么好处?
1、静态页面比动态页面更容易被搜索引擎索引。
2、访问静态页面不需要程序处理,可以提高运行速度。
3、减轻服务器的负担。
4、HTML 页面不会受到 Asp 相关漏洞的影响。
静态处理的网站比没有静态处理的网站相对安全,因为静态网站不会是黑客的首选,因为黑客不知道你的后端系统,黑客从前台静态页面很难攻击。它还具有一定的稳定性。例如,如果数据库或网站程序出现问题,不会干扰静态处理的页面,也不会因程序或数据的影响而无法打开页面。
搜索引擎蜘蛛程序更喜欢这样的网址,这也可以减少蜘蛛程序的工作量。虽然有些人认为搜索引擎现在完全可以抓取和识别动态 URL,但我建议您可以将它们设为静态。尝试制作一个静态网址。
下面我们主要讲一下静态页面的概念,希望对大家有所帮助!
什么是 HTML 静态:
常说的页面静态有两种,一种是伪静态,即url重写,一种是真静态。
在PHP网站开发中,为了网站推广和SEO的需要,需要对整个网站或部分网站进行静态处理。用PHP生成静态HTML页面的方法有很多种,比如使用PHP模板和缓存来实现静态页面。
PHP静态的简单理解就是让网站生成的页面以静态HTML的形式呈现在访问者面前。PHP静态分为纯静态和伪静态。两者的区别在于PHP生成静态页面的处理机制。
PHP伪静态:一种使用Apache mod_rewrite实现URL重写的方法。
HTML 静态的好处:
一、减轻服务器负担,浏览网页无需调用系统数据库。
二、有利于搜索引擎优化SEO,百度、谷歌会优先收录静态页面,不仅很快收录,还收录整个列表;
三、 加快页面打开速度,静态页面不需要连接数据库,打开速度比动态页面快;
四、 网站更加安全,HTML页面不会受到PHP程序相关漏洞的影响;看看大一点的网站,基本上都是静态页面,可以减少攻击,防止SQL注入。当发生数据库错误时,不影响网站的正常访问。
五、 发生数据库错误时,不会影响网站的正常访问。
最重要的是提高访问速度,减轻服务器的负担。当数据量几万、几十万甚至更多的时候,你就知道哪个更快了。而且很容易被搜索引擎找到。虽然生成html文章操作起来比较麻烦,程序也比较复杂,但是为了让搜索更容易、更快、更安全,这些牺牲都是值得的。
实现HTML静态化的策略和实例:
基本方式
file_put_contents() 函数
利用php内置的缓存机制实现页面静态输出缓冲。
方法一:使用PHP模板生成静态页面
实现静态PHP模板非常方便,比如安装和使用PHP Smarty实现静态网站。
在使用Smarty的情况下,也可以实现静态页面。简单说一下使用Smarty时常用的动态阅读方式。
一般分为这几个步骤:
1、 通过 URL 传递一个参数(ID);
2、然后根据这个ID查询数据库;
3、 获取数据后,根据需要修改显示内容;
4、分配要显示的数据;
5、显示模板文件。
Smarty静态过程只需要在上述过程中增加两步即可。
第一:在1之前使用ob_start()打开缓冲区。
第二:5之后,使用ob_get_contents()获取内存未输出的内容,然后使用fwrite()将内容写入目标html文件。
根据上面的描述,这个过程是在网站前台实现的,内容管理(添加、修改、删除)通常在后台进行。为了有效地利用上述过程,可以使用一个小方法,即Header()。具体过程如下:添加修改程序后,使用Header()跳转到前台阅读,使页面可以HTML化,生成html后再跳回后台管理端,这两个跳转进程是不可见的。
方法二:使用PHP文件读写功能生成静态页面
方法三:使用PHP输出控制功能(Output Control)/ob缓存机制生成静态页面
输出控制功能(Output Control)是利用和控制缓存来生成静态HTML页面。它还使用PHP文件读写功能。
例如某商品的动态详情页地址为:?goods.php?gid=112
所以这里我们根据这个地址读取一次这个详情页的内容,然后保存为静态页面。下次有人访问这个商品详情页的动态地址时,我们可以直接输出生成的静态内容文件。
PHP生成静态页面示例代码1
PHP生成静态页面示例代码2
我们知道PHP是用来做网站开发的,一般执行结果都是直接输出到浏览器的。为了使用PHP生成静态页面,需要使用输出控制功能来控制缓存区,从而获取缓存区的内容,然后输出到静态HTML页面文件中,从而实现静态网站。
PHP生成静态页面的思路是:先开启缓存,然后输出HTML内容(也可以通过include以文件的形式收录
HTML内容),然后获取缓存中的内容,然后通过PHP文件读写功能清除缓存。缓存的内容被写入到静态 HTML 页面文件中。
获取输出缓存内容生成静态HTML页面的过程需要三个函数:ob_start()、ob_get_contents()、ob_end_clean()。
知识点:
1、ob_start函数一般用于开启缓存。注意在使用ob_start之前不能有任何输出,比如空格、字符等。
2、ob_get_contents 函数主要用于获取缓存中的内容,并以字符串形式返回。注意这个函数必须在ob_end_clean函数之前调用,否则会获取不到缓存内容。
3、ob_end_clean 函数主要是清除缓存中的内容,关闭缓存。如果成功,则返回 True,如果失败,则返回 False。
方法四:使用nosql从内存中读取内容(其实这不是静态的而是缓存的);
以memcache为例:
Memcached 是 key 和 value 一一对应的。key的默认最大大小不能超过128字节,value的默认大小是1M,所以1M的大小可以满足大部分网页的存储。