十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
由于在向服务器访问一个资源文件的时候,静态页面要远比动态页面的效率要高。因为动态文件需要脚本执行,或者数据库的读取开销(磁盘IO开销);
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的柳江网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!因此,就需要将动态网站的数据变成静态化,更加提升网站的整体性能。(用户体验),要保证用户在最短的时间内高效的在浏览器端展示出页面。
页面静态化分为:1、真静态:形成真正的静态html文件;
2、伪静态:在URL地址上做出一个类似静态URL的地址形式上好并且利于(SEO);利用apache中的重写功能;
真静态主要就是利用一个叫ob缓存的技术来实现,一般一个php脚本在请求的时候,需要完成三个缓存,
1.ob缓存(php自带,默认是关闭的),如果开启的话,程序在执行过程中,会把输出的内容先放到ob缓存中(遇到响应头,放入程序缓存中)
2.程序缓存(是必须开启的,响应头和响应主体),如果ob缓存没有开启,数据就直接到程序缓存中,在php5.3之前的版本,在响应头之前是不可以有输出内容的,不然会报错,但php5.3之前就不会,因为在程序缓存输出给浏览器时,会对缓存中的数据与响应头做相应的调整;
3.浏览器缓存
现实ob缓存的相关函数:
ob_start()ob缓存开启
ob_get_contents()获取ob缓存里面的内容(但ob缓存中的数据还在,相当于复制一份)
ob_clean()清空ob缓存的内容,但是不关闭ob缓存
ob_end_clean()清空ob缓存的内容,并关闭ob缓存
ob_flush()将ob缓存的内容输出到程序缓存,但是不关闭ob缓存(相当于直接把ob缓存中数据剪切到程序缓存中)
ob_end_flush将ob缓存的内容输出到程序缓存,并关闭ob缓存
具体实现小案例:
先建立一个index.php文件在前端现实简单数据
主要是循环输出一些信息,然后有个链接可以点击跳转;
主要实现,就是为了,当第一次访问的时候,开启了ob缓存,并把ob缓存里面的数据,写入到一个静态html文件中,当下次访问中,就先判断是否有该静态文件了,如果有就直接读取静态文件,终止脚本结束;没有就在生成;
time())){ include_once "./static/{$id}.html";exit; } //连接数据库 mysql_connect(\'localhost\',\'root\',\'mysql\'); mysql_query(\'set names utf8\'); mysql_query(\'use blog\'); $sql = "select * from bl_article where id ={$id}"; $result = mysql_query($sql); $data = mysql_fetch_assoc($result); //开启ob缓存 ob_start(); ?>
实际访问的是一个动态php脚本文件,但在地址栏上显示的是.html后缀的文件,因为这样有利于seo;
实现原理:利用Apache提供的Rewrite模块,将URL地址重写
1. 开启Apache配置文件httpd.conf文件中的Rewrite模块,然后需要重启Apache
# 开启重写模块 LoadModule rewrite_module modules/mod_rewrite.so
2.需要将当前虚拟主机的一个配置改掉
然后再该文件中编辑如下代码:
# 表示开启重写功能 RewriteEngine on # 重写的规则 这里可以使用正则来匹配 RewriteRule index.html index.php
以上纯属个人学习理解,如有不对,来访者请指正。谢谢!