1. 什么是PHP静态化
  2.  
  3. PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同。
  4.  
  5. 为什么要让网页静态化
  6. 一、加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高;
  7. 二、有利于搜索引擎优化SEOBaiduGoogle都会优先收录静态页面,不仅被收录的快还收录的全;
  8. 三、减轻服务器负担,浏览网页无需调用系统数据库;
  9. 四、网站更安全,HTML页面不会受php相关漏洞的影响; 观看一下大一点的网站基本全是静态页面,而且可以减少攻击,防sql注入。
  10. 数据库出错时,不影响网站正常访问。
  11. 生成html文章虽操作上麻烦些,程序上繁杂些,但为了更利于搜索,为了速度更快些,更安全,这些牺牲还是值得的。
  12.  
  13. PHP生成静态HTML页面的方法
  14.  
  15. 利用PHP模板生成静态页面
  16.  
  17. PHP模板实现静态化非常方便,比如安装和使用PHP Smarty实现网站静态化,也可以自己写一套模板解析规则,常见的可以模仿各类cms的模板规则。
  18.  
  19. 1.使用PHP文件读写功能与ob缓存机制生成静态页面
  20. 比如某个商品的动态详情页地址是: http://xxx.com?goods.php?gid=112
  21. 那么这里我们根据这个地址读取一次这个详情页的内容,然后保存为静态页,下次有人访问这个商品详情页动态地址时,我们可以
  22. 直接把已生成好的对应静态内容文件输出出来。
  23. <!--?php
  24. $gid = $_GET['gid']+0;//商品id
  25. $goods_statis_file = "goods_file_".$gid.".html";//对应静态页文件
  26. $expr = 3600*24*10;//静态文件有效期,十天
  27. if(file_exists($goods_statis_file)){
  28. $file_ctime =filectime($goods_statis_file);//文件创建时间
  29. if($file_ctime+$expr-->time()){//如果没过期
  30. echo file_get_contents($goods_statis_file);//输出静态文件内容
  31. exit;
  32. }else{//如果已过期
  33. unlink($goods_statis_file);//删除过期的静态页文件
  34. ob_start();
  35.  
  36. //从数据库读取数据,并赋值给相关变量
  37.  
  38. //include ("xxx.html");//加载对应的商品详情页模板
  39.  
  40. $content = ob_get_contents();//把详情页内容赋值给$content变量
  41. file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中
  42. ob_end_flush();//输出商品详情页信息
  43. }
  44. }else{
  45. ob_start();
  46.  
  47. //从数据库读取数据,并赋值给相关变量
  48.  
  49. //include ("xxx.html");//加载对应的商品详情页模板
  50.  
  51. $content = ob_get_contents();//把详情页内容赋值给$content变量
  52. file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中
  53. ob_end_flush();//输出商品详情页信息
  54.  
  55. }
  56.  
  57. ?>
  58. 2.使用nosql从内存中读取内容(其实这个已经不算静态化了而是缓存);
  59.  
  60. memcache为例:
  61. <!--?php
  62. $gid = $_GET['gid']+0;//商品id
  63. $goods_statis_content = "goods_content_".$gid;//对应键
  64. $expr = 3600*24*10;//有效期,十天
  65.  
  66. $mem = new Memcache;
  67. $mem--->connect('memcache_host', 11211);
  68.  
  69. $mem_goods_content = $mem->get($goods_statis_content);
  70.  
  71. if($mem_goods_content){
  72. echo $mem_goods_content;
  73. }else{
  74. ob_start();
  75.  
  76. //从数据库读取数据,并赋值给相关变量
  77.  
  78. //include ("xxx.html");//加载对应的商品详情页模板
  79.  
  80. $content = ob_get_contents();//把详情页内容赋值给$content变量
  81. $mem->add($goods_statis_content,$content, false, $expr);
  82. ob_end_flush();//输出商品详情页信息
  83.  
  84. }
  85.  
  86. ?>
  87. memcached是键值一一对应,key默认最大不能超过128个字节,value默认大小是1M,因此1M大小满足大多数网页大小的存储。
  88. 以上就是页面静态化的相关方法,希望对朋友们有所帮助

PHP静态化(非伪静态化)的更多相关文章

  1. PHP 404页面/如何设置404页面/URL静态化/URL伪静态化

    php中如何设置404页面及其他错误页面 首先在项目根目录下新建文件,文件名为" .htaccess " 在该文件中写入一下配置项: ErrorDocument 404 /404. ...

  2. p2p gossip 结构化 非结构化

    p2p P2P中文名字叫对等网络,网络中节点地位一致.    QQ其实不算P2P,因为QQ利用了中央服务器.   Hbase这样的分布式系统,因为有Hmaster节点,也不算是P2P网络:   cas ...

  3. PHP 页面静态化/纯静态化/伪静态化

    个人博客迁移至独立博客:https://blog.plcent.com/,欢迎大家访问 概念 PHP静态化分为:纯静态化 和 伪静态化:纯静态化又分为:局部静态化 和 完全静态化 纯静态化:是把PHP ...

  4. CI框架伪静态化配置

    CI框架伪静态化配置 伪静态化,即:去掉入口的index.php, 在url后面加上 .html 后缀 CI默认的rewrite url中是类似这样的,例如你的CI根目录是在/CodeIgniter/ ...

  5. aspnetcore 实现简单的伪静态化

    aspnetcore 实现简单的伪静态化 Intro 在我的活动室预约项目中,有一个公告模块,类似于新闻发布,个人感觉像新闻这种网页基本就是发布的时候编辑一次之后就再也不会改了,最适合静态化了, 静态 ...

  6. JSP静态化(伪静态)

    关于URLRewirte的用法:该方法只是实现了url的伪静态化,并不是真正的静态化. URLRewirte版本:urlrewrite-2.6.0.jar URLRewirte的用处: 1.满足搜索引 ...

  7. 【转】比较详细的Asp伪静态化方法及Asp静态化探讨

    目前,各大搜索引擎如google.百度.雅虎已经对动态页面诸如asp,php有着不错的支持了,只要动态页面后面的参数不要太长,如控制在3个参数内,页面内容做点优化,各大搜索对该类页面收录甚至不比静态h ...

  8. JSP页面静态化总结之一使用URLRewrite实现url地址伪静态化

    JSP页面静态化总结之一使用URLRewrite实现url地址伪静态化 1使用URLRewrite实现url地址伪静态化1.1URLRewirte的用处 1.满足搜索引擎的要求. 2.隐藏技术实现,提 ...

  9. java urlrewrite实现伪静态化

    1.示例 http://www.onlyfun.com/goods/company.jsp?companyId=455326 ==> http://www.onlyfun.com/company ...

随机推荐

  1. 安装MongoDB 到服务器

    用管理员身份运行CMD > cd C:\Program Files\mongodb\bin > C:\Program Files\mongodb\bin>mongod --dbpat ...

  2. js 或 且 非

    给定 x=6 以及 y=3,下表解释了逻辑运算符: 运算符 描述 例子 && and (x < 10 && y > 1) 为 true || or (x== ...

  3. Dubbo -- 系统学习 笔记 -- 入门

    Dubbo -- 系统学习 笔记 -- 目录 入门 背景 需求 架构 用法 入门 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行, ...

  4. 使用pyenv管理不同的python版本

    1. pvenv的安装 git clone https://github.com/yyuu/pyenv.git ~/.pyenv echo 'export PYENV_ROOT="$HOME ...

  5. error:please select android sdk

    发现问题所在就是 在model iml文件中: 把<orderEntry type="inheritedJdk" /> 改成 <orderEntry type=& ...

  6. 二叉查找树(BST)的性质

    二叉查找树的性质: 1.左子树上所有结点的值均小于或等于它的根结点的值. 2.右子树上所有结点的值均大于或等于它的根结点的值. 3.左.右子树也分别为二叉排序树. 下图中这棵树,就是一颗典型的二叉查找 ...

  7. open-falcon之HBS

    功能 处理agent心跳请求,并将agent信息(ip.hostname.agent_version.plugin_version)等信息入库(portal库) 为agent提供执行run api的白 ...

  8. 基于thinkphp和ajax的省市区三级联动

    练习,就当练习. 省市区三级联动,样式如下图所示: 1,导入两个js文件并且导入数据库文件. 两个js文件分别是jquery-2.1.4.min.js和jquery-1.js,数据库文件,见附件. 2 ...

  9. 【消息队列】windows下安装RabbitMQ消息队列服务器

    RabbitMQ是什么 ? RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. 1:安装RabbitMQ需要先安装Erla ...

  10. 【大数据系列】hadoop集群的配置

    一.hadoop的配置文件分类 1.只读类型的默认文件 core-default.xml     hdfs-default.xml    mapred-default.xml   mapred-que ...