转:php页面静态化之真静态
之前的缓存和现在所说的页面静态化都是为网站提速的,如果是访问量小的小型网站可能不需要但是如果网站规模或访问量很大,那么页面静态化和缓存就会体现出各自的价值了下面先来了解下页面静态化的分类
页面静态化的分类:
1,按照形式:
1)真静态
2)伪静态
2,按照范围:
1)局部静态话(jquery,ajax)
2)全部静态化
页面静态化可以为网站提速还能进行seo优化,因为搜索引擎偏向抓取静态页面,针对不同的搜索引擎seo的标准可能不同。下面提供一个百度搜索引擎优化的链接
这次给大家分享的是页面真静态技术,本次将以一个简单的新闻管理系统为例子介绍真静态技术的使用,项目使用mvc架构来弄
一.真静态的理解
真静态就是把我们先前访问的jsp,php,aspx变为html,保留先前的页面效果和业务逻辑,减轻服务器的压力、让网站被良好的收录。但是真静态也有缺点那就是过多的静态页面占用了服务器空间,维护不是很方便。
二 开始静态化新闻管理系统
1.通过列表页面以最快速度查看单条数据的详细信息(如通过新闻列表查看某一条新闻的详细内容)
如果没有静态化的前提下,我们的做法可能是通过点击列表页面的标题传一个ID过去,之后查询出单条数据之后显示在一个页面上,这样我们每次点击链接都会去访问一次数据库,这样服务器的压力必然变大,可取的做法是每次添加数据都生成对应的详细页面
(1)简单的后台管理页面
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>后台管理</title>
- </head>
- <body>
- <h3><a href="addNews.php">添加新闻</a></h3>
- <h3><a href="../controller/NewsAction.php?opper=updatecache">更新列表页</a></h3>
- </body>
- </html>
(2)添加新闻的操作
- if("add"==$opper){
- $news=new NewsManagerImpl();
- $title=$_POST["title"];
- $content=$_POST["content"];
- $result=$news->addNews($title, $content);
- if($result>0){
- //生成静态html(用于查询单条数据)
- $fp=fopen("../static/news-id-".$result.".html", "w");
- $ftpl=fopen("../tpl/newsDetail.tpl", "r");
- while(!feof($ftpl)){
- $row=fgets($ftpl);
- //替换相应的位置
- $row=str_replace("{title}", $title, $row);
- $row=str_replace("{content}", $content, $row);
- fwrite($fp, $row);
- }
- fclose($ftpl);
- fclose($fp);
- header("Location:../manage/success.html");
- }
- exit();
- }
下面来看看newsDetail.tpl这个模板文件
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>新闻列表</title>
- <style type="text/css">
- *{
- font-size:12px;
- }
- </style>
- </head>
- <body>
- <br></br>
- <table width="725" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse" bordercolor="#6699CC" >
- <tr bgcolor="#6699cc">
- <th scope="col">新闻标题</th>
- <th scope="col">新闻内容</th>
- </tr>
- <tr align='center' height='25px'>
- <td scope="col">{title}</td>
- <td scope="col">{content}</td>
- </tr>
- </table>
- </body>
- </html>
2.静态化列表页
这一部分的工作其实很简单,就看你能不能想的上去,像修改、删除我们可以按照原来的做法,该怎么弄就怎么弄,只需要定期更新静态化后的列表页就可以了,更新的频率按照自身需要即可。
下面是我的做法:
- if("updatecache"==$opper){
- $rowInfo="";
- $listInfo="";
- $news=new NewsManagerImpl();
- $all=$news->getAllNews();
- for ($i = 0; $i < count($all); $i++) {
- $row=$all[$i];
- //拼接列表信息
- $listInfo.="<tr align='center' height='25px'>";
- $listInfo.="<td>{$row['id']}</td>";
- $listInfo.="<td>{$row['title']}</td>";
- $listInfo.="<td><a href='../static/news-id-{$row['id']}.html'>查看</a></td>";
- //$listInfo.="<td><a href='../controller/NewsAction.php?opper=delete&id={$row['id']}'>删除</a></td>";
- //$listInfo.="<td><a href='../controller/NewsAction.php?opper=toupdatepage&id={$row['id']}'>修改</a></td>";
- $listInfo.= "</tr>";
- }
- //列表页静态化
- $listTpl=fopen("../tpl/newsList.tpl", "r");
- while(!feof($listTpl)){
- $rowInfo.=fgets($listTpl);
- }
- $all=str_replace("{newsContent}", $listInfo , $rowInfo);
- $staticListFp=fopen("../static/newsList.html", "w");
- fwrite($staticListFp, $all);
- fclose($listTpl);
- fclose($staticListFp);
- header("Location:../manage/success.html");
- }
是不是就只是一个重新读一下数据的简单操作呢,最后给大家拉几个效果图省的说我在这瞎写
后台的话一般不用考虑静态化,因为后台是给自己看的,只要性能不是很差静态化意义不大。
原文来自于:http://blog.csdn.net/walkcode/article/details/17115343
转:php页面静态化之真静态的更多相关文章
- PHP静态化之真静态化
参考文献:http://blog.sina.com.cn/s/blog_66aa1142010114lc.html 采用了动态服务器技术生成静态HTML的做法,这样做的好处是:一是能减轻其服务器的负担 ...
- [PHP]PHP页面静态化:真静态的两种方案
---------------------------------------------------------------------------------------------- /*|-- ...
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_21-页面静态化-静态化测试-静态化程序编写
public String getPageHtml(String pageId){ /** * 静态化程序获取页面的DataUrl * * 静态化程序远程请求DataUrl获取数据模型 * * 静态化 ...
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_16-页面静态化-模板管理-模板制作
这是轮播图的原始文件 运行门户需要把 nginx启动起来 单独运行轮播图.把里面的css的引用都加上网址的url 这就是单独访问到的轮播图的效果 轮播图模板的地址: 阶段5 3.微服务项目[学成在线] ...
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_12-页面静态化-页面静态化流程
需要知道数据结构,然后去做模板标签.首先需要获取页面的数据模型.下面的每一条记录都代表一个页面. 比如这个轮播图.就需要提前给这个轮播图编写一个模板 有很多的页面如果知道每个页面的dataUrl.例如 ...
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_01-页面静态化需求分析
上半部分就是静态化 业务流程如下: 1.获取模型数据 2.制作模板 3.对页面进行静态化 4.将静态化生成的html页面存放文件系统中 5.将存放在文件系统的html文件发布到服务器
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_22-页面静态化-静态化测试-静态化程序测试
测试service内些的静态化的方法 先新建一个测试类 模板的id 放到下拉的静态数据里面 这样这条数据 就是用用的轮播图005这个模板 把这条数据静态化 进入到断点里面.先获取数据模型 获取模板时 ...
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_20-页面静态化-静态化测试-填写页面DataUrl
启动前端和后端.轮播图的数据url可以在这里修改. 找到列表页面的轮播图,然后点击编辑 随便更新一个地址测试 提交后数据再次编辑 发现url没有变化 在pageService里面update方法把更新 ...
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_15-页面静态化-模板管理-模板管理业务流程
在视频教学的过程中,不会去做模板管理的模块 cms_template用来存储模板信息 cms_page 这一些课程页面用的是一个模板 模板的详情.templateFileId是模板的文件id 模板的文 ...
随机推荐
- 10th day
貌似有几天没写博客了额.... 现在学习MySQL数据库,难度并不是很大,只是需要记忆的知识点比较多,好多语法之类的,比较容易混淆,而且老师讲课的速度还是蛮快的,虽然部分同学觉得听起来有点吃力,不过我 ...
- solr 在windows下的安装
安装环境 Windows 7 64bit Apache-tomcat-8.0.9-windows-x64 Solr-4.9.0 JDK 1.8.0_05 64bit 安装步骤 Tomcat和JDk的安 ...
- Demo_塔防(自动生成怪物,导航,炮塔攻击,怪物掉血死忙)
using UnityEngine; using System.Collections; public struct WaveMsg { //该波次生成的怪物 public GameObject mo ...
- Android URI简单介绍
就Android平台而言,URI主要分三个部分:scheme, authority and path.当中authority又分为host和port.格式例如以下: scheme://host:por ...
- Qt 学习之路 :线程简介
现代的程序中,使用线程的概率应该大于进程.特别是在多核时代,随着 CPU 主频的提升,受制于发热量的限制,CPU 散热问题已经进入瓶颈,另辟蹊径地提高程序运行效率就是使用线程,充分利用多核的优势.有关 ...
- Swift: Initialization-2
Failable Initializers 有的时候,可能是参数问题.需要的外部资源没有到位等原因,初始化可能失败.为了应对这种情况,我们可以定义一个或多个可失败的构造方法. init? A fail ...
- Template Method 模板方法
简介 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤的细节 抽象模板AbstractClass的方法分为两类: 基本 ...
- 1、第1课.net学习2150916
HTML标签 1.<p> <p> 标签 段落标签 2.<h1-6></h1> 文字标签从1-6 3. <i></i> 斜体 &l ...
- CSS中表示cellpadding和cellspacing的方法
本文和大家重点讨论一下用CSS来表示表格的cellpadding和cellspacing方法,表格的cellpadding和cellspacing我们经常会用一定的方式来清除默认样式,请看下文详细介绍 ...
- 二、T4模板
上文带大家见识了下T4,这里呢开始介绍T4模板有关的内容.关于T4模板介绍和使用网上一搜一箩筐,想深入研究的可以自行去找些资料,这里只介绍接下来我们需要使用的一些知识,不会面面俱到的讲T4模板所有的知 ...