之前的缓存和现在所说的页面静态化都是为网站提速的,如果是访问量小的小型网站可能不需要但是如果网站规模或访问量很大,那么页面静态化和缓存就会体现出各自的价值了下面先来了解下页面静态化的分类

页面静态化的分类:

1,按照形式:

1)真静态

2)伪静态

2,按照范围:

1)局部静态话(jquery,ajax)

2)全部静态化

页面静态化可以为网站提速还能进行seo优化,因为搜索引擎偏向抓取静态页面,针对不同的搜索引擎seo的标准可能不同。下面提供一个百度搜索引擎优化的链接

http://baiduseoguide.com/

这次给大家分享的是页面真静态技术,本次将以一个简单的新闻管理系统为例子介绍真静态技术的使用,项目使用mvc架构来弄

一.真静态的理解

真静态就是把我们先前访问的jsp,php,aspx变为html,保留先前的页面效果和业务逻辑,减轻服务器的压力、让网站被良好的收录。但是真静态也有缺点那就是过多的静态页面占用了服务器空间,维护不是很方便。

二 开始静态化新闻管理系统

1.通过列表页面以最快速度查看单条数据的详细信息(如通过新闻列表查看某一条新闻的详细内容)

如果没有静态化的前提下,我们的做法可能是通过点击列表页面的标题传一个ID过去,之后查询出单条数据之后显示在一个页面上,这样我们每次点击链接都会去访问一次数据库,这样服务器的压力必然变大,可取的做法是每次添加数据都生成对应的详细页面

(1)简单的后台管理页面

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>后台管理</title>
  6. </head>
  7. <body>
  8. <h3><a href="addNews.php">添加新闻</a></h3>
  9. <h3><a href="../controller/NewsAction.php?opper=updatecache">更新列表页</a></h3>
  10. </body>
  11. </html>

(2)添加新闻的操作

  1. if("add"==$opper){
  2. $news=new NewsManagerImpl();
  3. $title=$_POST["title"];
  4. $content=$_POST["content"];
  5. $result=$news->addNews($title, $content);
  6. if($result>0){
  7. //生成静态html(用于查询单条数据)
  8. $fp=fopen("../static/news-id-".$result.".html", "w");
  9. $ftpl=fopen("../tpl/newsDetail.tpl", "r");
  10. while(!feof($ftpl)){
  11. $row=fgets($ftpl);
  12. //替换相应的位置
  13. $row=str_replace("{title}",  $title, $row);
  14. $row=str_replace("{content}",  $content, $row);
  15. fwrite($fp, $row);
  16. }
  17. fclose($ftpl);
  18. fclose($fp);
  19. header("Location:../manage/success.html");
  20. }
  21. exit();
  22. }

下面来看看newsDetail.tpl这个模板文件

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <title>新闻列表</title>
  6. <style type="text/css">
  7. *{
  8. font-size:12px;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <br></br>
  14. <table width="725" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse" bordercolor="#6699CC" >
  15. <tr bgcolor="#6699cc">
  16. <th scope="col">新闻标题</th>
  17. <th scope="col">新闻内容</th>
  18. </tr>
  19. <tr align='center' height='25px'>
  20. <td scope="col">{title}</td>
  21. <td scope="col">{content}</td>
  22. </tr>
  23. </table>
  24. </body>
  25. </html>

2.静态化列表页

这一部分的工作其实很简单,就看你能不能想的上去,像修改、删除我们可以按照原来的做法,该怎么弄就怎么弄,只需要定期更新静态化后的列表页就可以了,更新的频率按照自身需要即可。

下面是我的做法:

  1. if("updatecache"==$opper){
  2. $rowInfo="";
  3. $listInfo="";
  4. $news=new NewsManagerImpl();
  5. $all=$news->getAllNews();
  6. for ($i = 0; $i < count($all); $i++) {
  7. $row=$all[$i];
  8. //拼接列表信息
  9. $listInfo.="<tr align='center' height='25px'>";
  10. $listInfo.="<td>{$row['id']}</td>";
  11. $listInfo.="<td>{$row['title']}</td>";
  12. $listInfo.="<td><a href='../static/news-id-{$row['id']}.html'>查看</a></td>";
  13. //$listInfo.="<td><a href='../controller/NewsAction.php?opper=delete&id={$row['id']}'>删除</a></td>";
  14. //$listInfo.="<td><a href='../controller/NewsAction.php?opper=toupdatepage&id={$row['id']}'>修改</a></td>";
  15. $listInfo.= "</tr>";
  16. }
  17. //列表页静态化
  18. $listTpl=fopen("../tpl/newsList.tpl", "r");
  19. while(!feof($listTpl)){
  20. $rowInfo.=fgets($listTpl);
  21. }
  22. $all=str_replace("{newsContent}", $listInfo , $rowInfo);
  23. $staticListFp=fopen("../static/newsList.html", "w");
  24. fwrite($staticListFp, $all);
  25. fclose($listTpl);
  26. fclose($staticListFp);
  27. header("Location:../manage/success.html");
  28. }

是不是就只是一个重新读一下数据的简单操作呢,最后给大家拉几个效果图省的说我在这瞎写

后台的话一般不用考虑静态化,因为后台是给自己看的,只要性能不是很差静态化意义不大。

原文来自于:http://blog.csdn.net/walkcode/article/details/17115343

转:php页面静态化之真静态的更多相关文章

  1. PHP静态化之真静态化

    参考文献:http://blog.sina.com.cn/s/blog_66aa1142010114lc.html 采用了动态服务器技术生成静态HTML的做法,这样做的好处是:一是能减轻其服务器的负担 ...

  2. [PHP]PHP页面静态化:真静态的两种方案

    ---------------------------------------------------------------------------------------------- /*|-- ...

  3. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_21-页面静态化-静态化测试-静态化程序编写

    public String getPageHtml(String pageId){ /** * 静态化程序获取页面的DataUrl * * 静态化程序远程请求DataUrl获取数据模型 * * 静态化 ...

  4. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_16-页面静态化-模板管理-模板制作

    这是轮播图的原始文件 运行门户需要把 nginx启动起来 单独运行轮播图.把里面的css的引用都加上网址的url 这就是单独访问到的轮播图的效果 轮播图模板的地址: 阶段5 3.微服务项目[学成在线] ...

  5. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_12-页面静态化-页面静态化流程

    需要知道数据结构,然后去做模板标签.首先需要获取页面的数据模型.下面的每一条记录都代表一个页面. 比如这个轮播图.就需要提前给这个轮播图编写一个模板 有很多的页面如果知道每个页面的dataUrl.例如 ...

  6. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_01-页面静态化需求分析

    上半部分就是静态化 业务流程如下: 1.获取模型数据 2.制作模板 3.对页面进行静态化 4.将静态化生成的html页面存放文件系统中 5.将存放在文件系统的html文件发布到服务器

  7. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_22-页面静态化-静态化测试-静态化程序测试

    测试service内些的静态化的方法 先新建一个测试类 模板的id 放到下拉的静态数据里面 这样这条数据 就是用用的轮播图005这个模板 把这条数据静态化 进入到断点里面.先获取数据模型 获取模板时 ...

  8. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_20-页面静态化-静态化测试-填写页面DataUrl

    启动前端和后端.轮播图的数据url可以在这里修改. 找到列表页面的轮播图,然后点击编辑 随便更新一个地址测试 提交后数据再次编辑 发现url没有变化 在pageService里面update方法把更新 ...

  9. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_15-页面静态化-模板管理-模板管理业务流程

    在视频教学的过程中,不会去做模板管理的模块 cms_template用来存储模板信息 cms_page 这一些课程页面用的是一个模板 模板的详情.templateFileId是模板的文件id 模板的文 ...

随机推荐

  1. 《Qt编程的艺术》——8.2.1 在Designer中使用View类

    不幸的是,QDirModel有一个严重的限制:因为view不响应鼠标操作,我们不得不自己建立这些功能.除此之外,每个view中,用户都一次只能选择一个元素.如果你想要允许同时选择多个项目,你也必须自己 ...

  2. selenium webdriver启动Chrome浏览器后无法输入网址的解决办法

    通过selenium webdriver启动Chrome浏览器,脚本如下: from selenium import webdriver browser = webdriver.Chrome() br ...

  3. Mybatis+SpringMVC实现分页查询(附源码)

    Maven+Mybatis+Spring+SpringMVC实现分页查询(附源码) 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Mybatis+MySQ ...

  4. 融云的Java端实现

    产品中要使用融云实现即时通讯,下面是实现步骤: 1 .注册appkey secret,这个是第一步: 2 .下载融云Java客户端 https://github.com/rongcloud/serve ...

  5. makeKeyAndVisible的作用

    [self.window makeKeyAndVisible]; 这个是便捷方法,去使被使用对象的主窗口显示到屏幕的最前端.你也可以使用hiddenUIView方法隐藏这个窗口

  6. MongoDB 聚合

    聚合操作过程中的数据记录和计算结果返回.聚合操作分组值从多个文档,并可以执行各种操作,分组数据返回单个结果.在SQL COUNT(*)和group by 相当于MongoDB的聚集. aggregat ...

  7. htaccess URL重写rewrite与重定向redirect(转)

    1. 将 .htm 页面映射到 .php 1 Options +FollowSymlinks 2 RewriteEngine on 3 RewriteRule ^(.*)\.htm$ $1.php [ ...

  8. qt 程序启动参数 -qws

    运行嵌入式程序 在嵌入式QT版本中,程序需要服务器或自己作为服务器程序.服务器程序构造的方法是构造一个QApplication::GuiServe类型的QApplication对象.或者使用-qws命 ...

  9. css3之 media query 使用(转)

    原文链接:http://www.moke8.com/article-5657-1.html 讲到响应式布局, 相信大家都有一定的了解,响应式布局是今年很流行的一个设计理念,随着移动互联网的盛行,为解决 ...

  10. UIDevice 系统信息详解

    获取当前设备    //获取当前设备    UIDevice *dev = [UIDevice currentDevice]; 设备和系统基本信息    NSLog(@"设备名称:%@&qu ...