浅谈页面静态化

(本篇所述基于wamp集成环境而言,适合新手参考。当然,也欢迎大神们给予宝贵意见,谢谢!) 

页面静态化就是将php文件转换成html文件当页面的数据要求的实时性不是很高的时候[换言之,数据的更新率不高时],使用页面静态化

 页面静态化可分为伪静态[URL地址重写]、真正的静态文件[由php产生]

说明伪静态化不是真实意义上存在的,其意义在于地址栏美化、便于seo收录[对搜索引擎友好],不能提高页面的响应速度,也无法减少数据库请求的压力

 页面静态化的意义在于提高页面的响应速度,减少数据库请求的压力

 

伪静态化的基本步骤

①开启Apache的URL重写模块,修改httpd.conf配置文件

LoadModule rewrite_module modules/mod_rewrite.so

AllowOverride None => AllowOverride All [共3个]

 

②重启Apache后,在项目根目录下创建文件.htaccess文件,该件可以通过新建记事本然后另存它的书写规则如下:

RewriteEngine On

RewriteRule list-(\d+).html list.php?page=$1 //传递参数型list.php传递页码参数page。置于前,匹配到的话则不往后看规则

RewriteRule url.html url.php //静态化重写url规则

RewriteRule (\w+).html $1.php //批量伪静态化,非传递参数型

 

③文件间的跳转链接也需要改成url.html样式,否则就成不了真正的伪静态;分页中,需通过判断是否开启URL重写模块来改变链接的方式。

 

真正的静态化步骤

①制作页面文件的缓存,提高页面的响应速度,减少数据库的查询 但是,它的缺陷访问硬盘里的文件,影响其输入输出[IO]传输效率

  First,判断页面的缓存文件是否存在,若存在,直接访问缓存文件;若不存在,访问php文件并将访问的结果生成一个页面的缓存文件。如下为简单实现原理的例子》》

$cache = "./cache/test.html";

if(file_exits($cache)){

  include $cache;

}else{

if(!file_exists("./cache/")){

  mkdir("./cache/",0777,true);

}

Echo $str = file_get_contents("http://127.0.0.1/PhpTest/test.php");  //这里的url为Apache使用的绝对路径哦

file_put_contents($cache,$str);

}

  Second,查看网页响应时间可在程序两端分别加上$start = microtime(true);$end = microtime(true);然后,($end - $start)即是响应请求时间。显然,使用缓存后,响应速度加快了很多倍!

  The last,设置缓存的生命周期$cache_lifetime,便于数据更新。

补充说明

  文件创建时间函数filectime(file_url);    //返回第一次创建(create)的时间,操作系统记录为节点

       文件修改时间函数filemtime(file_url);  //通过修改(make)时间可以判断缓存是否过期

       文件访问时间函数fileatime(file_url); 

 

 

页面静态化之Memcache

 

Memcache与Memcached

  memcache是danga的一个项目名称,是一个管理内存的C/S模式软件;它是一个高性能的分布式的内存对象缓存系统,通过内存维护一个巨大的hash表[key--value键值对],可存储各种数据[不建议大文件],大大提高读取数据。

memcached是memcache服务器端的主程序文件名[类似Apache的httpd和mysql的mysqld],以守护[任务管理器的进程]程序方式运行于一个或多个服务器中,随时接收客户端的连接和操作。

  memcache默认端口:11211

  使用memcache,提高页面的响应速度,使缓存响应速度更快,减少数据库的请求。它用于当数据被大量用户访问的时候、数据被大并发的用户访问时

 

Memcached软件的安装

a.服务器端的安装

  我们需要将memcached.exe文件拷贝到硬盘当中。

  安装至系统服务

    1.安装:f:/memcache/memcached.exe –d install

    2.开启:memcached.exe –d start

    3.停止:memcached –d stop

    4.卸载:memcached –d uninstall

b.客户端的安装

  使用telnet连接客户端,xp已默认安装telnet,win7、win8在控制面板的程序和功能的打开或关闭新的功能中选中安装telnet客户端

telnet localhost/127.0.0.1/www.***.com 11211[默认端口号,可以更改]

  

  一些操作指令如下:  

  stats -- 查看服务器相关状态信息

  stats items //遍历内存中所有数据。查看所有选项个数,获取标识位的值

    显示数据如下:

    STAT items:1【标识位】:number 1【标识位的个数】

    STAT items:1:age 6

    STAT items:1:evicted 0

    STAT items:1:outofmemory 0

 

  stats cachedump [items中标识位的值] [查看几条信息,为0时显示所有] //获取键名

  add [键名] [标志位,通常为int型] [生存周期,单位s] [存入值的长度] =>value[受长度的影响] //添加数据,可以添加多个,但不支持覆盖

  set name[键名] 1[标志位,通常为int型] 60[生存周期,单位s] 10[存入值的长度] =>value[受长度的影响] //添加和修改数据,比较常用

  get name[键名] //获取,查询数据

  delete name[键名] //删除数据

  flush_all //删除所有数据

  quit //退出客户端

 

php作为memcached的客户端[使用memcache扩展类]

  安装php的memcache扩展,对应版本的php_memcache.dll => php安装路径下的ext目录下,修改php.ini => 添加extension=php_memcache.dll => 重启Apache

 

php操作memcache的两套扩展库:memcache库和memcached库

memcache库既可以使用面向对象(OO),也可以使用面向过程,它是php内置的一套库

memcached库基于libmemcached,只支持面向对象(OO),功能更加强大!方法更加丰富,效率较memcache高!

 

memcache和memcached的区别:

①memcache是项目名称,memcached是服务器软件名称

②memcached是软件memcached的守护进程名称

③memcache是php内置的一套扩展库,memcached是基于libmemcached的一套第三方法扩展库

④memcache库既支持面向对象的写法,也支持面向过程的写法,而memcached只支持面向对象的写法

⑤memcached功能更加强大!方法更加丰富,效率较memcache高!

 

 

PHP操作memcache

 

$mem = new memcache(); //实例化memcache对象。对于对象而言,赋值表示引用赋值...clone

$conn = $mem -> connect("localhost",11211); //连接memcache服务器,返回bool类型

$mem ->addserver("ip/localhost",port); //memcache分布式,其实mysql和apache也可以分布式 -- 进阶:负载均衡、反向代理、设备监控、心跳感应、主从复制

$mem -> getstats(); //操作数据之得到服务器相关状态信息,返回array

$mem -> add/set("key_name","value_name",flag如1或MEMCACHE_COMPRESSED,timeout如3600); //添加/更新数据,这里php会获取长度,不写。value_name可以是array、object

$mem -> get("value_name"); //获取、查询数据

$mem -> delete("value_name"); //删除数据

$mem -> close(); //关闭连接

 

$mem ->getExtendedStats("items");//遍历内存中所有键的值,返回array。"items" <=> stats items

$mem ->getextendedstats("cachedump",$i,0);

 

  值得说明的是,timeout时间直接写秒数的写法最大为3600*24*30。写时间戳的写法time() + 3600*24*31 可实现存储31天以上的时间!

memcache用于静态化,存储数据库操作产生的数据到memcache。在timeout时间内减少数据库的连接压力!

   集体宿舍的黑灯瞎火,就先到这吧,碎觉了 。。。

posted @ 2014-10-10 00:22  qiqi_firefox  阅读(279)  评论(0编辑  收藏  举报