PHP页面静态化技术

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何为大型网站提速:

1.静态化

2.缓存技术memcache

3.Mysql优化

瓶颈:带宽,数据库访问

提出问题->引出新技术->小案例->细节->使用到项目中

三个重要概念:

1.静态网站

http://localhost/test.html

2.动态网址

http://localhost/showNews.php?id=2&title=test搜索引擎不喜欢

3.伪静态网址

传统做法:

http://localhost/showNews.php?lang=cn&class=2&id=100

这种网址不好,SEO不好, SQL注入攻击危险

改成伪静态网址:不要过于精简

http://localhost/news-cn-class2-id100.html

补充说明:SEO 搜索引擎优化

页面静态化概念:

在实际开发中通常使用缓存技术或页面静态化来解决

页面静态化分为:

1.真静态:把php -> html访问时不操作数据库

2.伪静态:只是把网址静态(访问数据库)

页面静态化的必要性:

1.访问PHP的速度一般比html慢

ab.exe可以用来测试网站访问速度( 压力测试),该工具可以模拟多人并发访问某个页面ab.exe -n 10000 -c 10 http://localhost/test.php

-n:请求多少次

-c:表示多少人并发访问

2.利于搜索引擎优化

URL长度,静态页参数,meta信息,图片alt信息,frame信息(尽量不要使用框架) 3.防止SQL注入

缓存机制不用总访问数据库

使用php缓存机制完成页面静态化

如果要测试php自己的缓存机制,需要做配置

php.ini中:

display_errors=On

output_buffering=Off

error_reporting=设置错误级别

//开启缓存[可以通过php.ini, 也可以通过ob_start()]

ob_start();

echo "yyy";

header("content-type:text/html;charset=utf-8");

echo "hello";

//ob_clean() 可以清空output_buffering内容

ob_clean();

//ob_end_clean()关闭output_buffering缓存,同时清空其中内容ob_end_clean();

//ob_flush()函数是把output_buffering内容输出,清空

ob_flush();

//ob_end_flush()函数是把output_buffering内容输出,清空并关闭ob_end_flush();

echo "kkk"; // => 程序缓存(内容必须放在header()后面)

//ob_get_contents()可以获取output_buffering内容

//$contents=ob_get_contents();

//file_put_contents("d:/log.txt", $contents);

?>

flush()函数是刷新程序缓存的内容

补充:php header()函数

定义和用法

header() 函数向客户端发送原始的HTTP报头。

认识到一点很重要,即必须在任何实际的输出被发送之前调用header() 函数(在PHP 4 以及更高的版本中,您可以使用输出缓存来解决此问题)

Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

/* This will give an error. Note the output

* above, which is before the header() call */

header('Location: /');

?>

程序开销

内存<文件<数据库

页面静态化思路:

如新闻这种信息,不是对实时性要求很高,并且比较稳定,所以我们可以这样做。

当第一个用户访问某个新闻时,我们用OB的缓存机制,把内容缓存到html页面中,

在下次访问时,直接访问html界面即可

在PHP中,以下代表假

1.FALSE

2..整型0

3.浮点型0.0

4.空字符串

5.不包含元素的数组

6.不包含任何成员变量的对象(仅PHP4.0适用)

7.特殊类型NULL

8.从没有任何标记的XML文档中生成的SimpleXML对象

第一次访问时,访问数据库,先用ob_get_contents()获取ob缓存数据,并通过file_put_contents()写入到一个html文件中(html命名有相应规则,按规则生成html文件名)

相关文档
最新文档