<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>页面静态化 &#8211; 个人随笔</title>
	<atom:link href="/label/%E9%A1%B5%E9%9D%A2%E9%9D%99%E6%80%81%E5%8C%96/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description></description>
	<lastBuildDate>Sat, 19 May 2018 13:11:04 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.1</generator>

<image>
	<url>/wp-content/uploads/2022/01/cropped-截屏2022-01-01-18.57.09-32x32.png</url>
	<title>页面静态化 &#8211; 个人随笔</title>
	<link>/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>页面静态化 地图API、页面静态化</title>
		<link>/%e7%bd%91%e7%ab%99%e4%bc%98%e5%8c%96/4777.html</link>
					<comments>/%e7%bd%91%e7%ab%99%e4%bc%98%e5%8c%96/4777.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 13:11:04 +0000</pubDate>
				<category><![CDATA[网站优化]]></category>
		<category><![CDATA[页面静态化]]></category>
		<category><![CDATA[地图API]]></category>
		<guid isPermaLink="false">/?p=4777</guid>

					<description><![CDATA[地图API 地图API介绍 地图API所指的就是能够提供地图相关的服务。 对于该服务一般都是通过JavaScr [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>地图API</h1>
<h2>地图API介绍</h2>
<p>
  地图API所指的就是能够提供地图相关的服务。
</p>
<p>
  对于该服务一般都是通过JavaScript或者其他语言将具体的地图信息嵌入到应用中
</p>
<p>
  例如58中是房子信息会显示出地点的地图信息
</p>
<p><img fetchpriority="high" decoding="async" width="762" height="426" src="/wp-content/uploads/2018/05/word-image-4300.png" class="wp-image-4779" srcset="/wp-content/uploads/2018/05/word-image-4300.png 762w, /wp-content/uploads/2018/05/word-image-4300-300x168.png 300w" sizes="(max-width: 762px) 100vw, 762px" /></p>
<p>
  地图API除了提供地图显示之外还提供 例如 定位、线路、周边等相关的服务
</p>
<h2>2.2、腾讯地图的使用</h2>
<h3>2.2.1、文档查看</h3>
<p>
  ①进入到文档
</p>
<p><img decoding="async" width="1336" height="354" src="/wp-content/uploads/2018/05/word-image-4301.png" class="wp-image-4780" srcset="/wp-content/uploads/2018/05/word-image-4301.png 1336w, /wp-content/uploads/2018/05/word-image-4301-300x79.png 300w, /wp-content/uploads/2018/05/word-image-4301-768x203.png 768w, /wp-content/uploads/2018/05/word-image-4301-1024x271.png 1024w" sizes="(max-width: 1336px) 100vw, 1336px" /></p>
<p>
  ②具体查看文档
</p>
<p><img decoding="async" width="1277" height="580" src="/wp-content/uploads/2018/05/word-image-4302.png" class="wp-image-4781" srcset="/wp-content/uploads/2018/05/word-image-4302.png 1277w, /wp-content/uploads/2018/05/word-image-4302-300x136.png 300w, /wp-content/uploads/2018/05/word-image-4302-768x349.png 768w, /wp-content/uploads/2018/05/word-image-4302-1024x465.png 1024w" sizes="(max-width: 1277px) 100vw, 1277px" /></p>
<h3>2.2.2、具体使用地图</h3>
<p>
  ①载入API
</p>
<p><img loading="lazy" decoding="async" width="1001" height="550" src="/wp-content/uploads/2018/05/word-image-4303.png" class="wp-image-4782" srcset="/wp-content/uploads/2018/05/word-image-4303.png 1001w, /wp-content/uploads/2018/05/word-image-4303-300x165.png 300w, /wp-content/uploads/2018/05/word-image-4303-768x422.png 768w" sizes="(max-width: 1001px) 100vw, 1001px" /></p>
<p>
  ②创建地图DOM元素
</p>
<p><img loading="lazy" decoding="async" width="1055" height="647" src="/wp-content/uploads/2018/05/word-image-4304.png" class="wp-image-4783" srcset="/wp-content/uploads/2018/05/word-image-4304.png 1055w, /wp-content/uploads/2018/05/word-image-4304-300x184.png 300w, /wp-content/uploads/2018/05/word-image-4304-768x471.png 768w, /wp-content/uploads/2018/05/word-image-4304-1024x628.png 1024w" sizes="(max-width: 1055px) 100vw, 1055px" /></p>
<p>
  ③创建对象
</p>
<p><img loading="lazy" decoding="async" width="1041" height="705" src="/wp-content/uploads/2018/05/word-image-4305.png" class="wp-image-4784" srcset="/wp-content/uploads/2018/05/word-image-4305.png 1041w, /wp-content/uploads/2018/05/word-image-4305-300x203.png 300w, /wp-content/uploads/2018/05/word-image-4305-768x520.png 768w, /wp-content/uploads/2018/05/word-image-4305-1024x693.png 1024w, /wp-content/uploads/2018/05/word-image-4305-220x150.png 220w" sizes="(max-width: 1041px) 100vw, 1041px" /></p>
<p>
  ④初始化地图
</p>
<p><img loading="lazy" decoding="async" width="1015" height="515" src="/wp-content/uploads/2018/05/word-image-4306.png" class="wp-image-4785" srcset="/wp-content/uploads/2018/05/word-image-4306.png 1015w, /wp-content/uploads/2018/05/word-image-4306-300x152.png 300w, /wp-content/uploads/2018/05/word-image-4306-768x390.png 768w" sizes="(max-width: 1015px) 100vw, 1015px" /></p>
<h3>2.2.3、根据指定地址显示地图</h3>
<p><img loading="lazy" decoding="async" width="1060" height="652" src="/wp-content/uploads/2018/05/word-image-4307.png" class="wp-image-4786" srcset="/wp-content/uploads/2018/05/word-image-4307.png 1060w, /wp-content/uploads/2018/05/word-image-4307-300x185.png 300w, /wp-content/uploads/2018/05/word-image-4307-768x472.png 768w, /wp-content/uploads/2018/05/word-image-4307-1024x630.png 1024w" sizes="(max-width: 1060px) 100vw, 1060px" /><br />
<img loading="lazy" decoding="async" width="1047" height="683" src="/wp-content/uploads/2018/05/word-image-4308.png" class="wp-image-4787" srcset="/wp-content/uploads/2018/05/word-image-4308.png 1047w, /wp-content/uploads/2018/05/word-image-4308-300x196.png 300w, /wp-content/uploads/2018/05/word-image-4308-768x501.png 768w, /wp-content/uploads/2018/05/word-image-4308-1024x668.png 1024w" sizes="(max-width: 1047px) 100vw, 1047px" /><br />
<img loading="lazy" decoding="async" width="1027" height="141" src="/wp-content/uploads/2018/05/word-image-4309.png" class="wp-image-4788" srcset="/wp-content/uploads/2018/05/word-image-4309.png 1027w, /wp-content/uploads/2018/05/word-image-4309-300x41.png 300w, /wp-content/uploads/2018/05/word-image-4309-768x105.png 768w, /wp-content/uploads/2018/05/word-image-4309-1024x141.png 1024w" sizes="(max-width: 1027px) 100vw, 1027px" /></p>
<h1>静态化概述</h1>
<h2>静态与动态网页</h2>
<p>
  ①静态网页
</p>
<p>
  直接以静态的html/shtml等格式直接显示内容的
</p>
<p><img loading="lazy" decoding="async" width="1014" height="577" src="/wp-content/uploads/2018/05/word-image-4310.png" class="wp-image-4789" srcset="/wp-content/uploads/2018/05/word-image-4310.png 1014w, /wp-content/uploads/2018/05/word-image-4310-300x171.png 300w, /wp-content/uploads/2018/05/word-image-4310-768x437.png 768w" sizes="(max-width: 1014px) 100vw, 1014px" /></p>
<p>
  优点：安全、运行速度快
</p>
<p>
  缺点：工作量大
</p>
<p>
  ②动态网页
</p>
<p>
  使用动态语言配合数据库显示内容。
</p>
<p><img loading="lazy" decoding="async" width="917" height="611" src="/wp-content/uploads/2018/05/word-image-4311.png" class="wp-image-4790" srcset="/wp-content/uploads/2018/05/word-image-4311.png 917w, /wp-content/uploads/2018/05/word-image-4311-300x200.png 300w, /wp-content/uploads/2018/05/word-image-4311-768x512.png 768w" sizes="(max-width: 917px) 100vw, 917px" /></p>
<p>
  优点：灵活性高、维护工作量小
</p>
<p>
  缺点：与静态网页相对比运行速度慢
</p>
<h2>什么是静态化</h2>
<p>
  将动态网页显示的内容转换为静态网页来进行显示，而具体转换的过程就是静态化。对于静态化是一个过程。在实现的完成后会产生对于的html静态文件。
</p>
<h2>静态化优点</h2>
<ol>
<li>
  安全性高
</li>
</ol>
<p>
  对于静态化的html文件不接受任何参数。
</p>
<ol>
<li>
  性能更高
</li>
</ol>
<p>
  对于静态的html文件Apache是直接解析文件响应结果。对于动态的php需要交给PHP引擎解析最后在由Apache响应结果
</p>
<ol>
<li>
  加载速度快
</li>
</ol>
<p>
  浏览器自带缓存功能
</p>
<ol>
<li>
  更加符合搜索引擎优化
</li>
</ol>
<p>
  对于百度、360搜索引擎更加喜欢收录静态的HTML文件
</p>
<h2>2.4、实现静态化的原理</h2>
<p>
  1、获取解析之后的结果(最终要显示的结果)
</p>
<p>
  2、写入文件(一定要自行设计一个规律写入)
</p>
<p>
  ①创建生成html文件的php
</p>
<p><img loading="lazy" decoding="async" width="978" height="612" src="/wp-content/uploads/2018/05/word-image-4312.png" class="wp-image-4791" srcset="/wp-content/uploads/2018/05/word-image-4312.png 978w, /wp-content/uploads/2018/05/word-image-4312-300x188.png 300w, /wp-content/uploads/2018/05/word-image-4312-768x481.png 768w" sizes="(max-width: 978px) 100vw, 978px" /></p>
<p>
  ②访问
</p>
<p><img loading="lazy" decoding="async" width="550" height="166" src="/wp-content/uploads/2018/05/word-image-4313.png" class="wp-image-4792" srcset="/wp-content/uploads/2018/05/word-image-4313.png 550w, /wp-content/uploads/2018/05/word-image-4313-300x91.png 300w" sizes="(max-width: 550px) 100vw, 550px" /></p>
<p>
  ③查看文件
</p>
<p><img loading="lazy" decoding="async" width="1188" height="496" src="/wp-content/uploads/2018/05/word-image-4314.png" class="wp-image-4793" srcset="/wp-content/uploads/2018/05/word-image-4314.png 1188w, /wp-content/uploads/2018/05/word-image-4314-300x125.png 300w, /wp-content/uploads/2018/05/word-image-4314-768x321.png 768w, /wp-content/uploads/2018/05/word-image-4314-1024x428.png 1024w" sizes="(max-width: 1188px) 100vw, 1188px" /></p>
<p>
  访问效果
</p>
<p><img loading="lazy" decoding="async" width="699" height="237" src="/wp-content/uploads/2018/05/word-image-4315.png" class="wp-image-4794" srcset="/wp-content/uploads/2018/05/word-image-4315.png 699w, /wp-content/uploads/2018/05/word-image-4315-300x102.png 300w" sizes="(max-width: 699px) 100vw, 699px" /></p>
<p>
  对于静态化中的两步骤能够实现就能够实现静态化功能。但是最常用的方式是使用PHP 中的OB缓存实现
</p>
<h2>静态化适用场景</h2>
<ol>
<li>
  适用于更新不是特别频繁的项目。例如行业、新闻门户或者企业项目使用
</li>
<li>
  可以针对更新较为频繁的项目的首页使用静态化
</li>
</ol>
<h1>缓存区</h1>
<h2>3.1、静态与动态网页解析流程(了解)</h2>
<h3>3.1.1、静态网页</h3>
<p><img loading="lazy" decoding="async" width="1236" height="508" src="/wp-content/uploads/2018/05/word-image-4316.png" class="wp-image-4795" srcset="/wp-content/uploads/2018/05/word-image-4316.png 1236w, /wp-content/uploads/2018/05/word-image-4316-300x123.png 300w, /wp-content/uploads/2018/05/word-image-4316-768x316.png 768w, /wp-content/uploads/2018/05/word-image-4316-1024x421.png 1024w" sizes="(max-width: 1236px) 100vw, 1236px" /></p>
<p>
  对于上述流程中将临时存储所读取到文件内容介子叫做程序缓存。程序缓存是一定存在的。不可以手动关闭
</p>
<h3>3.1.2、动态网页</h3>
<p><img loading="lazy" decoding="async" width="1207" height="505" src="/wp-content/uploads/2018/05/word-image-4317.png" class="wp-image-4796" srcset="/wp-content/uploads/2018/05/word-image-4317.png 1207w, /wp-content/uploads/2018/05/word-image-4317-300x126.png 300w, /wp-content/uploads/2018/05/word-image-4317-768x321.png 768w, /wp-content/uploads/2018/05/word-image-4317-1024x428.png 1024w" sizes="(max-width: 1207px) 100vw, 1207px" /></p>
<p>
  对于上述流程中涉及到两种缓存系统，一种是程序缓存，另外一种是OB缓存。
</p>
<h2>3.2、程序缓存</h2>
<p>
  注意案例过程中需要关闭OB缓存。直接修改配置文件注释掉即可
</p>
<p><img loading="lazy" decoding="async" width="779" height="671" src="/wp-content/uploads/2018/05/word-image-4318.png" class="wp-image-4797" srcset="/wp-content/uploads/2018/05/word-image-4318.png 779w, /wp-content/uploads/2018/05/word-image-4318-300x258.png 300w, /wp-content/uploads/2018/05/word-image-4318-768x662.png 768w" sizes="(max-width: 779px) 100vw, 779px" /></p>
<p>
  注意重启Apache
</p>
<p>
  ①编写案例
</p>
<p><img loading="lazy" decoding="async" width="1011" height="386" src="/wp-content/uploads/2018/05/word-image-4319.png" class="wp-image-4798" srcset="/wp-content/uploads/2018/05/word-image-4319.png 1011w, /wp-content/uploads/2018/05/word-image-4319-300x115.png 300w, /wp-content/uploads/2018/05/word-image-4319-768x293.png 768w" sizes="(max-width: 1011px) 100vw, 1011px" /></p>
<p>
  ②图解
</p>
<p><img loading="lazy" decoding="async" width="1201" height="535" src="/wp-content/uploads/2018/05/word-image-4320.png" class="wp-image-4799" srcset="/wp-content/uploads/2018/05/word-image-4320.png 1201w, /wp-content/uploads/2018/05/word-image-4320-300x134.png 300w, /wp-content/uploads/2018/05/word-image-4320-768x342.png 768w, /wp-content/uploads/2018/05/word-image-4320-1024x456.png 1024w" sizes="(max-width: 1201px) 100vw, 1201px" /></p>
<p>
  从上述案例结果只能够能够确认一定会存在程序缓存。如果不存在，会导致结果只看到一部分。当代码执行的过程中将一切的输出都放入到程序缓存中也包括header所设置的响应头
</p>
<p>
  当PHP程序执行完毕 Apache需要获取程序缓存中的内容进行封包。因此直接程序缓存中的内容刷新给Apache进行响应
</p>
<h2>3.3、OB缓存</h2>
<h3>3.3.1、OB缓存案例一</h3>
<p>
  ①代码
</p>
<p><img loading="lazy" decoding="async" width="1064" height="408" src="/wp-content/uploads/2018/05/word-image-4321.png" class="wp-image-4800" srcset="/wp-content/uploads/2018/05/word-image-4321.png 1064w, /wp-content/uploads/2018/05/word-image-4321-300x115.png 300w, /wp-content/uploads/2018/05/word-image-4321-768x294.png 768w, /wp-content/uploads/2018/05/word-image-4321-1024x393.png 1024w" sizes="(max-width: 1064px) 100vw, 1064px" /></p>
<p>
  ②效果
</p>
<p><img loading="lazy" decoding="async" width="1183" height="241" src="/wp-content/uploads/2018/05/word-image-4322.png" class="wp-image-4801" srcset="/wp-content/uploads/2018/05/word-image-4322.png 1183w, /wp-content/uploads/2018/05/word-image-4322-300x61.png 300w, /wp-content/uploads/2018/05/word-image-4322-768x156.png 768w, /wp-content/uploads/2018/05/word-image-4322-1024x209.png 1024w" sizes="(max-width: 1183px) 100vw, 1183px" /></p>
<p>
  ③图解
</p>
<p><img loading="lazy" decoding="async" width="1144" height="507" src="/wp-content/uploads/2018/05/word-image-4323.png" class="wp-image-4802" srcset="/wp-content/uploads/2018/05/word-image-4323.png 1144w, /wp-content/uploads/2018/05/word-image-4323-300x133.png 300w, /wp-content/uploads/2018/05/word-image-4323-768x340.png 768w, /wp-content/uploads/2018/05/word-image-4323-1024x454.png 1024w" sizes="(max-width: 1144px) 100vw, 1144px" /></p>
<p>
  ④描述
</p>
<p>
  当代码在执行是顺序将内容放入程序缓存。最后由Apache进行封包响应由于Apache会提供一个默认的的响应头因此导致响应的格式不对因此导致错误
</p>
<h3>3.3.2、OB缓存案例二</h3>
<p>
  ①代码
</p>
<p><img loading="lazy" decoding="async" width="1126" height="452" src="/wp-content/uploads/2018/05/word-image-4324.png" class="wp-image-4803" srcset="/wp-content/uploads/2018/05/word-image-4324.png 1126w, /wp-content/uploads/2018/05/word-image-4324-300x120.png 300w, /wp-content/uploads/2018/05/word-image-4324-768x308.png 768w, /wp-content/uploads/2018/05/word-image-4324-1024x411.png 1024w" sizes="(max-width: 1126px) 100vw, 1126px" /></p>
<p>
  ②画图分析
</p>
<p><img loading="lazy" decoding="async" width="1239" height="512" src="/wp-content/uploads/2018/05/word-image-4325.png" class="wp-image-4804" srcset="/wp-content/uploads/2018/05/word-image-4325.png 1239w, /wp-content/uploads/2018/05/word-image-4325-300x124.png 300w, /wp-content/uploads/2018/05/word-image-4325-768x317.png 768w, /wp-content/uploads/2018/05/word-image-4325-1024x423.png 1024w" sizes="(max-width: 1239px) 100vw, 1239px" /></p>
<ol>
<li>
  当代码执行到第三行ob_start开启了一个全新的OB缓存区
</li>
<li>
  当代码执行到第五行 是内容书输出因此优先放入到OB缓存
</li>
<li>
  当代码执行到第七行由于header是设置响应头的并非直接输出因此进入到了程序缓存
</li>
<li>
  当代码执行到第九行同样为输出存储到Ob缓存中
</li>
<li>
  最终代码执行完毕，由于没有进行手动的刷新操作。因此PHP自动的将OB缓存中的内容刷新到程序缓存中
</li>
<li>
  Apache读取程序缓存中的内容进行封包响应
</li>
</ol>
<h2>3.4.、OB缓存注意事项</h2>
<p>
  1、OB缓存默认是一个开启状态 可以通过php.ini中的output_buffering控制
</p>
<p>
  2、当有程序缓存跟OB缓存同时存在。输出的内容优先放入OB缓存。而非输出的内容例如控制响应的会放入到程序缓存。例如cookie、session等相关的设置
</p>
<p>
  3、当代码执行完毕。PHP会自动的将OB缓存中的内容刷新到程序缓存中
</p>
<p>
  4、OB缓存可以开启多个。每一个之间相互不响应
</p>
<h2>3.5、OB缓存中常用函数</h2>
<p>
  Ob_start();开启OB缓存
</p>
<p>
  Ob_get_contents();获取OB缓存中的内容
</p>
<p>
  Ob_clean():清空OB缓存中的内容
</p>
<p>
  Ob_end_clean():清空并且关闭OB缓存
</p>
<p>
  Ob_flush();手动的刷新OB缓存到程序缓存中
</p>
<p>
  Ob_end_flush();将OB缓存中的内容刷新到程序缓存并且关闭OB缓存
</p>
<p>
  ①ob_get_contents
</p>
<p><img loading="lazy" decoding="async" width="1175" height="591" src="/wp-content/uploads/2018/05/word-image-4326.png" class="wp-image-4805" srcset="/wp-content/uploads/2018/05/word-image-4326.png 1175w, /wp-content/uploads/2018/05/word-image-4326-300x151.png 300w, /wp-content/uploads/2018/05/word-image-4326-768x386.png 768w, /wp-content/uploads/2018/05/word-image-4326-1024x515.png 1024w" sizes="(max-width: 1175px) 100vw, 1175px" /></p>
<p>
  浏览器访问结果
</p>
<p><img loading="lazy" decoding="async" width="591" height="226" src="/wp-content/uploads/2018/05/word-image-4327.png" class="wp-image-4806" srcset="/wp-content/uploads/2018/05/word-image-4327.png 591w, /wp-content/uploads/2018/05/word-image-4327-300x115.png 300w" sizes="(max-width: 591px) 100vw, 591px" /></p>
<p>
  文件中结果
</p>
<p><img loading="lazy" decoding="async" width="777" height="238" src="/wp-content/uploads/2018/05/word-image-4328.png" class="wp-image-4807" srcset="/wp-content/uploads/2018/05/word-image-4328.png 777w, /wp-content/uploads/2018/05/word-image-4328-300x92.png 300w, /wp-content/uploads/2018/05/word-image-4328-768x235.png 768w" sizes="(max-width: 777px) 100vw, 777px" /></p>
<p>
  ②ob_clean
</p>
<p><img loading="lazy" decoding="async" width="1054" height="699" src="/wp-content/uploads/2018/05/word-image-4329.png" class="wp-image-4808" srcset="/wp-content/uploads/2018/05/word-image-4329.png 1054w, /wp-content/uploads/2018/05/word-image-4329-300x199.png 300w, /wp-content/uploads/2018/05/word-image-4329-768x509.png 768w, /wp-content/uploads/2018/05/word-image-4329-1024x679.png 1024w" sizes="(max-width: 1054px) 100vw, 1054px" /></p>
<p>
  浏览器结果
</p>
<p><img loading="lazy" decoding="async" width="532" height="166" src="/wp-content/uploads/2018/05/word-image-4330.png" class="wp-image-4809" srcset="/wp-content/uploads/2018/05/word-image-4330.png 532w, /wp-content/uploads/2018/05/word-image-4330-300x94.png 300w" sizes="(max-width: 532px) 100vw, 532px" /></p>
<p>
  文件中结果
</p>
<p><img loading="lazy" decoding="async" width="725" height="262" src="/wp-content/uploads/2018/05/word-image-4331.png" class="wp-image-4810" srcset="/wp-content/uploads/2018/05/word-image-4331.png 725w, /wp-content/uploads/2018/05/word-image-4331-300x108.png 300w" sizes="(max-width: 725px) 100vw, 725px" /></p>
<p>
  ③ob_flush
</p>
<p><img loading="lazy" decoding="async" width="1155" height="698" src="/wp-content/uploads/2018/05/word-image-4332.png" class="wp-image-4811" srcset="/wp-content/uploads/2018/05/word-image-4332.png 1155w, /wp-content/uploads/2018/05/word-image-4332-300x181.png 300w, /wp-content/uploads/2018/05/word-image-4332-768x464.png 768w, /wp-content/uploads/2018/05/word-image-4332-1024x619.png 1024w" sizes="(max-width: 1155px) 100vw, 1155px" /></p>
<p>
  浏览器效果
</p>
<p><img loading="lazy" decoding="async" width="654" height="215" src="/wp-content/uploads/2018/05/word-image-4333.png" class="wp-image-4812" srcset="/wp-content/uploads/2018/05/word-image-4333.png 654w, /wp-content/uploads/2018/05/word-image-4333-300x99.png 300w" sizes="(max-width: 654px) 100vw, 654px" /></p>
<p>
  文件效果
</p>
<p><img loading="lazy" decoding="async" width="695" height="213" src="/wp-content/uploads/2018/05/word-image-4334.png" class="wp-image-4813" srcset="/wp-content/uploads/2018/05/word-image-4334.png 695w, /wp-content/uploads/2018/05/word-image-4334-300x92.png 300w" sizes="(max-width: 695px) 100vw, 695px" /></p>
<h2>4.6、OB缓存嵌套</h2>
<p><img loading="lazy" decoding="async" width="892" height="654" src="/wp-content/uploads/2018/05/word-image-4335.png" class="wp-image-4814" srcset="/wp-content/uploads/2018/05/word-image-4335.png 892w, /wp-content/uploads/2018/05/word-image-4335-300x220.png 300w, /wp-content/uploads/2018/05/word-image-4335-768x563.png 768w" sizes="(max-width: 892px) 100vw, 892px" /></p>
<p>
  对于上述案例浏览器会逐个输出并且会顺序的输出1,2,3。说明ob缓存每一次开启都会开启一个缓存区。每个之间存在一个“标号”关系
</p>
<p><img loading="lazy" decoding="async" width="728" height="138" src="/wp-content/uploads/2018/05/word-image-4336.png" class="wp-image-4815" srcset="/wp-content/uploads/2018/05/word-image-4336.png 728w, /wp-content/uploads/2018/05/word-image-4336-300x57.png 300w" sizes="(max-width: 728px) 100vw, 728px" /></p>
<p>
  而在三个文件中分别的内容为php、mysql、java 产生此结果原因。因为每一个缓存区之间不相互影响
</p>
<h2>4.7、使用OB缓存实现静态化</h2>
<p>
  ①创建新闻数据表
</p>
<p>
  CREATE TABLE `news` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `title` varchar(255) NOT NULL DEFAULT &#8221;,
</p>
<p>
    `body` varchar(255) NOT NULL DEFAULT &#8221;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</p>
<p>
  ②写入测试数据
</p>
<p><img loading="lazy" decoding="async" width="684" height="270" src="/wp-content/uploads/2018/05/word-image-4337.png" class="wp-image-4816" srcset="/wp-content/uploads/2018/05/word-image-4337.png 684w, /wp-content/uploads/2018/05/word-image-4337-300x118.png 300w" sizes="(max-width: 684px) 100vw, 684px" /></p>
<p>
  ③编写新闻列表页
</p>
<p><img loading="lazy" decoding="async" width="1051" height="685" src="/wp-content/uploads/2018/05/word-image-4338.png" class="wp-image-4817" srcset="/wp-content/uploads/2018/05/word-image-4338.png 1051w, /wp-content/uploads/2018/05/word-image-4338-300x196.png 300w, /wp-content/uploads/2018/05/word-image-4338-768x501.png 768w, /wp-content/uploads/2018/05/word-image-4338-1024x667.png 1024w" sizes="(max-width: 1051px) 100vw, 1051px" /></p>
<p>
  ④创建可以生产新闻详情页的PHP文件
</p>
<p><img loading="lazy" decoding="async" width="1092" height="622" src="/wp-content/uploads/2018/05/word-image-4339.png" class="wp-image-4818" srcset="/wp-content/uploads/2018/05/word-image-4339.png 1092w, /wp-content/uploads/2018/05/word-image-4339-300x171.png 300w, /wp-content/uploads/2018/05/word-image-4339-768x437.png 768w, /wp-content/uploads/2018/05/word-image-4339-1024x583.png 1024w" sizes="(max-width: 1092px) 100vw, 1092px" /><br />
<img loading="lazy" decoding="async" width="911" height="432" src="/wp-content/uploads/2018/05/word-image-4340.png" class="wp-image-4819" srcset="/wp-content/uploads/2018/05/word-image-4340.png 911w, /wp-content/uploads/2018/05/word-image-4340-300x142.png 300w, /wp-content/uploads/2018/05/word-image-4340-768x364.png 768w" sizes="(max-width: 911px) 100vw, 911px" /></p>
<p>
  ⑤访问触发生产
</p>
<p><img loading="lazy" decoding="async" width="809" height="198" src="/wp-content/uploads/2018/05/word-image-4341.png" class="wp-image-4820" srcset="/wp-content/uploads/2018/05/word-image-4341.png 809w, /wp-content/uploads/2018/05/word-image-4341-300x73.png 300w, /wp-content/uploads/2018/05/word-image-4341-768x188.png 768w" sizes="(max-width: 809px) 100vw, 809px" /></p>
<p>
  ⑥查看文件
</p>
<p><img loading="lazy" decoding="async" width="1335" height="627" src="/wp-content/uploads/2018/05/word-image-4342.png" class="wp-image-4821" srcset="/wp-content/uploads/2018/05/word-image-4342.png 1335w, /wp-content/uploads/2018/05/word-image-4342-300x141.png 300w, /wp-content/uploads/2018/05/word-image-4342-768x361.png 768w, /wp-content/uploads/2018/05/word-image-4342-1024x481.png 1024w" sizes="(max-width: 1335px) 100vw, 1335px" /></p>
<p>
  ⑦给列表增加连接地址
</p>
<p><img loading="lazy" decoding="async" width="1116" height="581" src="/wp-content/uploads/2018/05/word-image-4343.png" class="wp-image-4822" srcset="/wp-content/uploads/2018/05/word-image-4343.png 1116w, /wp-content/uploads/2018/05/word-image-4343-300x156.png 300w, /wp-content/uploads/2018/05/word-image-4343-768x400.png 768w, /wp-content/uploads/2018/05/word-image-4343-1024x533.png 1024w" sizes="(max-width: 1116px) 100vw, 1116px" /></p>
<h2>4.8、商城使用静态化</h2>
<h3>4.8.1、商城首页进行静态化</h3>
<p>
  ①创建控制器方法
</p>
<p><img loading="lazy" decoding="async" width="981" height="437" src="/wp-content/uploads/2018/05/word-image-4344.png" class="wp-image-4823" srcset="/wp-content/uploads/2018/05/word-image-4344.png 981w, /wp-content/uploads/2018/05/word-image-4344-300x134.png 300w, /wp-content/uploads/2018/05/word-image-4344-768x342.png 768w" sizes="(max-width: 981px) 100vw, 981px" /></p>
<p>
  ②查看TP静态化的方法
</p>
<p><img loading="lazy" decoding="async" width="1137" height="714" src="/wp-content/uploads/2018/05/word-image-4345.png" class="wp-image-4824" srcset="/wp-content/uploads/2018/05/word-image-4345.png 1137w, /wp-content/uploads/2018/05/word-image-4345-300x188.png 300w, /wp-content/uploads/2018/05/word-image-4345-768x482.png 768w, /wp-content/uploads/2018/05/word-image-4345-1024x643.png 1024w" sizes="(max-width: 1137px) 100vw, 1137px" /></p>
<p>
  ③修改方法实现静态化
</p>
<p><img loading="lazy" decoding="async" width="1130" height="695" src="/wp-content/uploads/2018/05/word-image-4346.png" class="wp-image-4825" srcset="/wp-content/uploads/2018/05/word-image-4346.png 1130w, /wp-content/uploads/2018/05/word-image-4346-300x185.png 300w, /wp-content/uploads/2018/05/word-image-4346-768x472.png 768w, /wp-content/uploads/2018/05/word-image-4346-1024x630.png 1024w" sizes="(max-width: 1130px) 100vw, 1130px" /></p>
<p>
  ④修改首页的模板
</p>
<p><img loading="lazy" decoding="async" width="1135" height="697" src="/wp-content/uploads/2018/05/word-image-4347.png" class="wp-image-4826" srcset="/wp-content/uploads/2018/05/word-image-4347.png 1135w, /wp-content/uploads/2018/05/word-image-4347-300x184.png 300w, /wp-content/uploads/2018/05/word-image-4347-768x472.png 768w, /wp-content/uploads/2018/05/word-image-4347-1024x629.png 1024w" sizes="(max-width: 1135px) 100vw, 1135px" /></p>
<p>
  ⑤修改footer模板
</p>
<p><img loading="lazy" decoding="async" width="935" height="310" src="/wp-content/uploads/2018/05/word-image-4348.png" class="wp-image-4827" srcset="/wp-content/uploads/2018/05/word-image-4348.png 935w, /wp-content/uploads/2018/05/word-image-4348-300x99.png 300w, /wp-content/uploads/2018/05/word-image-4348-768x255.png 768w" sizes="(max-width: 935px) 100vw, 935px" /></p>
<p>
  ⑥访问方法触发生产操作
</p>
<p><img loading="lazy" decoding="async" width="683" height="181" src="/wp-content/uploads/2018/05/word-image-4349.png" class="wp-image-4828" srcset="/wp-content/uploads/2018/05/word-image-4349.png 683w, /wp-content/uploads/2018/05/word-image-4349-300x80.png 300w" sizes="(max-width: 683px) 100vw, 683px" /></p>
<p>
  结果
</p>
<p><img loading="lazy" decoding="async" width="1361" height="516" src="/wp-content/uploads/2018/05/word-image-4350.png" class="wp-image-4829" srcset="/wp-content/uploads/2018/05/word-image-4350.png 1361w, /wp-content/uploads/2018/05/word-image-4350-300x114.png 300w, /wp-content/uploads/2018/05/word-image-4350-768x291.png 768w, /wp-content/uploads/2018/05/word-image-4350-1024x388.png 1024w" sizes="(max-width: 1361px) 100vw, 1361px" /><br />
<img loading="lazy" decoding="async" width="1233" height="578" src="/wp-content/uploads/2018/05/word-image-4351.png" class="wp-image-4830" srcset="/wp-content/uploads/2018/05/word-image-4351.png 1233w, /wp-content/uploads/2018/05/word-image-4351-300x141.png 300w, /wp-content/uploads/2018/05/word-image-4351-768x360.png 768w, /wp-content/uploads/2018/05/word-image-4351-1024x480.png 1024w" sizes="(max-width: 1233px) 100vw, 1233px" /></p>
<p>
  注意使用静态化一定要注意更新
</p>
<h3>4.8.2、商城公告使用静态化</h3>
<p>
  ①创建数据表
</p>
<p>
  CREATE TABLE `news` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `title` varchar(255) NOT NULL DEFAULT &#8221;,
</p>
<p>
    `body` varchar(255) NOT NULL DEFAULT &#8221;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
</p>
<p>
  ②创建更新的方法
</p>
<p><img loading="lazy" decoding="async" width="1097" height="499" src="/wp-content/uploads/2018/05/word-image-4352.png" class="wp-image-4831" srcset="/wp-content/uploads/2018/05/word-image-4352.png 1097w, /wp-content/uploads/2018/05/word-image-4352-300x136.png 300w, /wp-content/uploads/2018/05/word-image-4352-768x349.png 768w, /wp-content/uploads/2018/05/word-image-4352-1024x466.png 1024w" sizes="(max-width: 1097px) 100vw, 1097px" /></p>
<p>
  ③根据更新的方法创建模板文件
</p>
<p><img loading="lazy" decoding="async" width="1061" height="676" src="/wp-content/uploads/2018/05/word-image-4353.png" class="wp-image-4832" srcset="/wp-content/uploads/2018/05/word-image-4353.png 1061w, /wp-content/uploads/2018/05/word-image-4353-300x191.png 300w, /wp-content/uploads/2018/05/word-image-4353-768x489.png 768w, /wp-content/uploads/2018/05/word-image-4353-1024x652.png 1024w" sizes="(max-width: 1061px) 100vw, 1061px" /></p>
<p>
  ④访问触发更新
</p>
<p><img loading="lazy" decoding="async" width="904" height="307" src="/wp-content/uploads/2018/05/word-image-4354.png" class="wp-image-4833" srcset="/wp-content/uploads/2018/05/word-image-4354.png 904w, /wp-content/uploads/2018/05/word-image-4354-300x102.png 300w, /wp-content/uploads/2018/05/word-image-4354-768x261.png 768w" sizes="(max-width: 904px) 100vw, 904px" /></p>
<p>
  ⑤查看目录文件
</p>
<p><img loading="lazy" decoding="async" width="870" height="177" src="/wp-content/uploads/2018/05/word-image-4355.png" class="wp-image-4834" srcset="/wp-content/uploads/2018/05/word-image-4355.png 870w, /wp-content/uploads/2018/05/word-image-4355-300x61.png 300w, /wp-content/uploads/2018/05/word-image-4355-768x156.png 768w" sizes="(max-width: 870px) 100vw, 870px" /></p>
<p>
  ⑥修改首页显示的公告
</p>
<p><img loading="lazy" decoding="async" width="1060" height="691" src="/wp-content/uploads/2018/05/word-image-4356.png" class="wp-image-4835" srcset="/wp-content/uploads/2018/05/word-image-4356.png 1060w, /wp-content/uploads/2018/05/word-image-4356-300x196.png 300w, /wp-content/uploads/2018/05/word-image-4356-768x501.png 768w, /wp-content/uploads/2018/05/word-image-4356-1024x668.png 1024w" sizes="(max-width: 1060px) 100vw, 1060px" /></p>
<p>
  ⑦修改模板显示数据
</p>
<p><img loading="lazy" decoding="async" width="1100" height="548" src="/wp-content/uploads/2018/05/word-image-4357.png" class="wp-image-4836" srcset="/wp-content/uploads/2018/05/word-image-4357.png 1100w, /wp-content/uploads/2018/05/word-image-4357-300x149.png 300w, /wp-content/uploads/2018/05/word-image-4357-768x383.png 768w, /wp-content/uploads/2018/05/word-image-4357-1024x510.png 1024w" sizes="(max-width: 1100px) 100vw, 1100px" /></p>
<p>
  ⑧增加公共函数
</p>
<p><img loading="lazy" decoding="async" width="1017" height="441" src="/wp-content/uploads/2018/05/word-image-4358.png" class="wp-image-4837" srcset="/wp-content/uploads/2018/05/word-image-4358.png 1017w, /wp-content/uploads/2018/05/word-image-4358-300x130.png 300w, /wp-content/uploads/2018/05/word-image-4358-768x333.png 768w" sizes="(max-width: 1017px) 100vw, 1017px" /></p>
<p>
  最终效果如下
</p>
<p><img loading="lazy" decoding="async" width="1325" height="357" src="/wp-content/uploads/2018/05/word-image-4359.png" class="wp-image-4838" srcset="/wp-content/uploads/2018/05/word-image-4359.png 1325w, /wp-content/uploads/2018/05/word-image-4359-300x81.png 300w, /wp-content/uploads/2018/05/word-image-4359-768x207.png 768w, /wp-content/uploads/2018/05/word-image-4359-1024x276.png 1024w" sizes="(max-width: 1325px) 100vw, 1325px" /><br />
<img loading="lazy" decoding="async" width="1055" height="401" src="/wp-content/uploads/2018/05/word-image-4360.png" class="wp-image-4839" srcset="/wp-content/uploads/2018/05/word-image-4360.png 1055w, /wp-content/uploads/2018/05/word-image-4360-300x114.png 300w, /wp-content/uploads/2018/05/word-image-4360-768x292.png 768w, /wp-content/uploads/2018/05/word-image-4360-1024x389.png 1024w" sizes="(max-width: 1055px) 100vw, 1055px" /></p>
<h1>5、伪静态</h1>
<h2>5.1、伪静态介绍</h2>
<p>
  从URL地址上查看类似真静态。但是在本质处理请求的还是有动态语言完成。对于伪静态的好处方便记忆并且符合搜索引擎优化
</p>
<h2>5.2、伪静态实现方式</h2>
<p>
  1、借助于web服务器的重写机制实现
</p>
<p>
  2、借助于框架中的路由功能
</p>
<h2>5.3、Apache开启重写机制</h2>
<p>
  ①启用Apache的重写机制
</p>
<p><img loading="lazy" decoding="async" width="1024" height="435" src="/wp-content/uploads/2018/05/word-image-4361.png" class="wp-image-4840" srcset="/wp-content/uploads/2018/05/word-image-4361.png 1024w, /wp-content/uploads/2018/05/word-image-4361-300x127.png 300w, /wp-content/uploads/2018/05/word-image-4361-768x326.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>
  ②设置虚拟主机可以重写
</p>
<p><img loading="lazy" decoding="async" width="973" height="433" src="/wp-content/uploads/2018/05/word-image-4362.png" class="wp-image-4841" srcset="/wp-content/uploads/2018/05/word-image-4362.png 973w, /wp-content/uploads/2018/05/word-image-4362-300x134.png 300w, /wp-content/uploads/2018/05/word-image-4362-768x342.png 768w" sizes="(max-width: 973px) 100vw, 973px" /></p>
<p>
  ③重启Apache
</p>
<p>
  对于Apache重写机制借助于.htaccess文件实现
</p>
<h2>5.4、伪静态案例</h2>
<h3>5.4.1、实现访问order.html由order.php进行解析</h3>
<p>
  ①创建虚拟主机
</p>
<p><img loading="lazy" decoding="async" width="868" height="321" src="/wp-content/uploads/2018/05/word-image-4363.png" class="wp-image-4842" srcset="/wp-content/uploads/2018/05/word-image-4363.png 868w, /wp-content/uploads/2018/05/word-image-4363-300x111.png 300w, /wp-content/uploads/2018/05/word-image-4363-768x284.png 768w" sizes="(max-width: 868px) 100vw, 868px" /></p>
<p>
  ②修改host
</p>
<p><img loading="lazy" decoding="async" width="505" height="428" src="/wp-content/uploads/2018/05/word-image-4364.png" class="wp-image-4843" srcset="/wp-content/uploads/2018/05/word-image-4364.png 505w, /wp-content/uploads/2018/05/word-image-4364-300x254.png 300w" sizes="(max-width: 505px) 100vw, 505px" /></p>
<p>
  ③重启Apache
</p>
<p>
  ④创建文件
</p>
<p><img loading="lazy" decoding="async" width="794" height="303" src="/wp-content/uploads/2018/05/word-image-4365.png" class="wp-image-4844" srcset="/wp-content/uploads/2018/05/word-image-4365.png 794w, /wp-content/uploads/2018/05/word-image-4365-300x114.png 300w, /wp-content/uploads/2018/05/word-image-4365-768x293.png 768w" sizes="(max-width: 794px) 100vw, 794px" /></p>
<p>
  ⑤访问测试
</p>
<p><img loading="lazy" decoding="async" width="838" height="157" src="/wp-content/uploads/2018/05/word-image-4366.png" class="wp-image-4845" srcset="/wp-content/uploads/2018/05/word-image-4366.png 838w, /wp-content/uploads/2018/05/word-image-4366-300x56.png 300w, /wp-content/uploads/2018/05/word-image-4366-768x144.png 768w" sizes="(max-width: 838px) 100vw, 838px" /><br />
<img loading="lazy" decoding="async" width="888" height="243" src="/wp-content/uploads/2018/05/word-image-4367.png" class="wp-image-4846" srcset="/wp-content/uploads/2018/05/word-image-4367.png 888w, /wp-content/uploads/2018/05/word-image-4367-300x82.png 300w, /wp-content/uploads/2018/05/word-image-4367-768x210.png 768w" sizes="(max-width: 888px) 100vw, 888px" /></p>
<p>
  ⑥创建重写规则文件
</p>
<p><img loading="lazy" decoding="async" width="988" height="520" src="/wp-content/uploads/2018/05/word-image-4368.png" class="wp-image-4847" srcset="/wp-content/uploads/2018/05/word-image-4368.png 988w, /wp-content/uploads/2018/05/word-image-4368-300x158.png 300w, /wp-content/uploads/2018/05/word-image-4368-768x404.png 768w" sizes="(max-width: 988px) 100vw, 988px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="599" height="177" src="/wp-content/uploads/2018/05/word-image-4369.png" class="wp-image-4848" srcset="/wp-content/uploads/2018/05/word-image-4369.png 599w, /wp-content/uploads/2018/05/word-image-4369-300x89.png 300w" sizes="(max-width: 599px) 100vw, 599px" /></p>
<h3>5.4.2、实现带参数的伪静态</h3>
<p>
  目的：用户访问http://demo.com/goods/10/100.html最终有http://demo.com/goods.php
</p>
<p>
  ①创建goods.php
</p>
<p><img loading="lazy" decoding="async" width="1005" height="289" src="/wp-content/uploads/2018/05/word-image-4370.png" class="wp-image-4849" srcset="/wp-content/uploads/2018/05/word-image-4370.png 1005w, /wp-content/uploads/2018/05/word-image-4370-300x86.png 300w, /wp-content/uploads/2018/05/word-image-4370-768x221.png 768w" sizes="(max-width: 1005px) 100vw, 1005px" /></p>
<p>
  ②修改重写规则文件
</p>
<p><img loading="lazy" decoding="async" width="1084" height="638" src="/wp-content/uploads/2018/05/word-image-4371.png" class="wp-image-4850" srcset="/wp-content/uploads/2018/05/word-image-4371.png 1084w, /wp-content/uploads/2018/05/word-image-4371-300x177.png 300w, /wp-content/uploads/2018/05/word-image-4371-768x452.png 768w, /wp-content/uploads/2018/05/word-image-4371-1024x603.png 1024w" sizes="(max-width: 1084px) 100vw, 1084px" /></p>
<p>
  ③效果
</p>
<p><img loading="lazy" decoding="async" width="851" height="140" src="/wp-content/uploads/2018/05/word-image-4372.png" class="wp-image-4851" srcset="/wp-content/uploads/2018/05/word-image-4372.png 851w, /wp-content/uploads/2018/05/word-image-4372-300x49.png 300w, /wp-content/uploads/2018/05/word-image-4372-768x126.png 768w" sizes="(max-width: 851px) 100vw, 851px" /></p>
<h3>5.4.3、防盗链</h3>
<p>
  防止其他项目使用自己的资源文件
</p>
<p>
  ①拷贝图片
</p>
<p><img loading="lazy" decoding="async" width="966" height="340" src="/wp-content/uploads/2018/05/word-image-4373.png" class="wp-image-4852" srcset="/wp-content/uploads/2018/05/word-image-4373.png 966w, /wp-content/uploads/2018/05/word-image-4373-300x106.png 300w, /wp-content/uploads/2018/05/word-image-4373-768x270.png 768w" sizes="(max-width: 966px) 100vw, 966px" /></p>
<p>
  ②修改重写规则文件
</p>
<p><img loading="lazy" decoding="async" width="1061" height="508" src="/wp-content/uploads/2018/05/word-image-4374.png" class="wp-image-4853" srcset="/wp-content/uploads/2018/05/word-image-4374.png 1061w, /wp-content/uploads/2018/05/word-image-4374-300x144.png 300w, /wp-content/uploads/2018/05/word-image-4374-768x368.png 768w, /wp-content/uploads/2018/05/word-image-4374-1024x490.png 1024w" sizes="(max-width: 1061px) 100vw, 1061px" /></p>
<p>
  ③访问查看效果
</p>
<p><img loading="lazy" decoding="async" width="1188" height="600" src="/wp-content/uploads/2018/05/word-image-4375.png" class="wp-image-4854" srcset="/wp-content/uploads/2018/05/word-image-4375.png 1188w, /wp-content/uploads/2018/05/word-image-4375-300x152.png 300w, /wp-content/uploads/2018/05/word-image-4375-768x388.png 768w, /wp-content/uploads/2018/05/word-image-4375-1024x517.png 1024w" sizes="(max-width: 1188px) 100vw, 1188px" /></p>
<h1>总结静态化与伪静态</h1>
<h2>7.1、静态化</h2>
<p>
  1、运行速度快
</p>
<p>
  2、更加安全
</p>
<p>
  3、加载速度快
</p>
<p>
  4、符合搜索引擎优化
</p>
<p>
  5、受磁盘的IO性能影响
</p>
<p>
  6、可扩展性不是特别高
</p>
<h2>7.2、伪静态</h2>
<p>
  1、符合搜索引擎优化
</p>
<p>
  2、地址容易记忆
</p>
<p>
  3、安全性略差一点
</p>
<p>
  4、可扩展性高。由于解析请求的是动态的php因此可以使用各种其他技术进行加速</p>
]]></content:encoded>
					
					<wfw:commentRss>/%e7%bd%91%e7%ab%99%e4%bc%98%e5%8c%96/4777.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PHP 核心编程（三）HTTP 协议、 文件操作、 页面静态化</title>
		<link>/php/1554.html</link>
					<comments>/php/1554.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Fri, 18 May 2018 10:04:25 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP核心编程]]></category>
		<category><![CDATA[HTTP 协议]]></category>
		<category><![CDATA[文件操作]]></category>
		<category><![CDATA[页面静态化]]></category>
		<guid isPermaLink="false">/?p=1554</guid>

					<description><![CDATA[文件操作、HTTP协议 文件夹操作 创建文件夹 注意事项： 创建文件夹模式介绍： 每个文件和文件夹都有三个权限 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>文件操作、HTTP协议</h1>
<h2>文件夹操作</h2>
<h3>创建文件夹</h3>
<p><img loading="lazy" decoding="async" width="599" height="275" src="/wp-content/uploads/2018/05/word-image-1391.png" class="wp-image-1556" srcset="/wp-content/uploads/2018/05/word-image-1391.png 599w, /wp-content/uploads/2018/05/word-image-1391-300x138.png 300w" sizes="(max-width: 599px) 100vw, 599px" /></p>
<p>
  注意事项：
</p>
<p><img loading="lazy" decoding="async" width="1216" height="60" src="/wp-content/uploads/2018/05/word-image-1392.png" class="wp-image-1557" srcset="/wp-content/uploads/2018/05/word-image-1392.png 1216w, /wp-content/uploads/2018/05/word-image-1392-300x15.png 300w, /wp-content/uploads/2018/05/word-image-1392-768x38.png 768w, /wp-content/uploads/2018/05/word-image-1392-1024x51.png 1024w" sizes="(max-width: 1216px) 100vw, 1216px" /></p>
<p>
  创建文件夹模式介绍：
</p>
<p>
  每个文件和文件夹都有三个权限：读权限（2<sup>0</sup>=1），写权限（2<sup>1</sup>=2），可执行权限（2<sup>2</sup>=4）
</p>
<p>
  7=1+2+4（表示读，写，执行权限都有）
</p>
<p>
  5=1+4（表示读，执行权限）
</p>
<p><img loading="lazy" decoding="async" width="643" height="94" src="/wp-content/uploads/2018/05/word-image-1393.png" class="wp-image-1558" srcset="/wp-content/uploads/2018/05/word-image-1393.png 643w, /wp-content/uploads/2018/05/word-image-1393-300x44.png 300w" sizes="(max-width: 643px) 100vw, 643px" /></p>
<p>
  例题
</p>
<p>
  &lt;?php
</p>
<p>
  //mkdir(&#8216;./aa&#8217;);		//在当前目录下创建aa文件夹
</p>
<p>
  //mkdir(&#8216;./aa/bb&#8217;);		//在aa文件夹下创建bb文件夹（前提aa文件夹必须存在）
</p>
<p>
  mkdir(&#8216;./aa/bb/cc&#8217;,777,true);	//递归创建文件夹
</p>
<h3>删除文件夹</h3>
<p><img loading="lazy" decoding="async" width="738" height="71" src="/wp-content/uploads/2018/05/word-image-1394.png" class="wp-image-1559" srcset="/wp-content/uploads/2018/05/word-image-1394.png 738w, /wp-content/uploads/2018/05/word-image-1394-300x29.png 300w" sizes="(max-width: 738px) 100vw, 738px" /></p>
<p>
  注意：
</p>
<p><img loading="lazy" decoding="async" width="765" height="52" src="/wp-content/uploads/2018/05/word-image-1395.png" class="wp-image-1560" srcset="/wp-content/uploads/2018/05/word-image-1395.png 765w, /wp-content/uploads/2018/05/word-image-1395-300x20.png 300w" sizes="(max-width: 765px) 100vw, 765px" /></p>
<p>
  例题
</p>
<p><img loading="lazy" decoding="async" width="464" height="68" src="/wp-content/uploads/2018/05/word-image-1396.png" class="wp-image-1561" srcset="/wp-content/uploads/2018/05/word-image-1396.png 464w, /wp-content/uploads/2018/05/word-image-1396-300x44.png 300w" sizes="(max-width: 464px) 100vw, 464px" /></p>
<h3>重命名、移动文件夹</h3>
<p>
  语法：rename()
</p>
<p><img loading="lazy" decoding="async" width="527" height="96" src="/wp-content/uploads/2018/05/word-image-1397.png" class="wp-image-1562" srcset="/wp-content/uploads/2018/05/word-image-1397.png 527w, /wp-content/uploads/2018/05/word-image-1397-300x55.png 300w" sizes="(max-width: 527px) 100vw, 527px" /></p>
<p>
  例题
</p>
<p><img loading="lazy" decoding="async" width="1121" height="81" src="/wp-content/uploads/2018/05/word-image-1398.png" class="wp-image-1563" srcset="/wp-content/uploads/2018/05/word-image-1398.png 1121w, /wp-content/uploads/2018/05/word-image-1398-300x22.png 300w, /wp-content/uploads/2018/05/word-image-1398-768x55.png 768w, /wp-content/uploads/2018/05/word-image-1398-1024x74.png 1024w" sizes="(max-width: 1121px) 100vw, 1121px" /></p>
<p>
  多学一招：rename也可以给文件重命名。
</p>
<h3>打开文件夹</h3>
<p><img loading="lazy" decoding="async" width="569" height="148" src="/wp-content/uploads/2018/05/word-image-1399.png" class="wp-image-1564" srcset="/wp-content/uploads/2018/05/word-image-1399.png 569w, /wp-content/uploads/2018/05/word-image-1399-300x78.png 300w" sizes="(max-width: 569px) 100vw, 569px" /></p>
<p>
  例题
</p>
<p><img loading="lazy" decoding="async" width="968" height="151" src="/wp-content/uploads/2018/05/word-image-1400.png" class="wp-image-1565" srcset="/wp-content/uploads/2018/05/word-image-1400.png 968w, /wp-content/uploads/2018/05/word-image-1400-300x47.png 300w, /wp-content/uploads/2018/05/word-image-1400-768x120.png 768w" sizes="(max-width: 968px) 100vw, 968px" /></p>
<h3>其他与文件夹相关的函数</h3>
<ol>
<li>
  is_dir()：是否是文件夹
</li>
<li>
  basename()：获取文件名
</li>
<li>
  dirname()：获取目录路径
</li>
<li>
  realpath()：获取绝对路径
</li>
</ol>
<p><img loading="lazy" decoding="async" width="982" height="89" src="/wp-content/uploads/2018/05/word-image-1401.png" class="wp-image-1566" srcset="/wp-content/uploads/2018/05/word-image-1401.png 982w, /wp-content/uploads/2018/05/word-image-1401-300x27.png 300w, /wp-content/uploads/2018/05/word-image-1401-768x70.png 768w" sizes="(max-width: 982px) 100vw, 982px" /></p>
<h3>遍历文件夹</h3>
<p><img loading="lazy" decoding="async" width="1069" height="399" src="/wp-content/uploads/2018/05/word-image-1402.png" class="wp-image-1567" srcset="/wp-content/uploads/2018/05/word-image-1402.png 1069w, /wp-content/uploads/2018/05/word-image-1402-300x112.png 300w, /wp-content/uploads/2018/05/word-image-1402-768x287.png 768w, /wp-content/uploads/2018/05/word-image-1402-1024x382.png 1024w" sizes="(max-width: 1069px) 100vw, 1069px" /></p>
<h2>文件操作</h2>
<h3>file_put_contents — 将一个字符串写入文件</h3>
<p>
  将字符串写到文件中，如果文件不存在就创建该文件，如果文件存在清空文件内容重新写入新内容。
</p>
<p><img loading="lazy" decoding="async" width="685" height="45" src="/wp-content/uploads/2018/05/word-image-1403.png" class="wp-image-1568" srcset="/wp-content/uploads/2018/05/word-image-1403.png 685w, /wp-content/uploads/2018/05/word-image-1403-300x20.png 300w" sizes="(max-width: 685px) 100vw, 685px" /></p>
<h3>file_get_contents — 将整个文件读入一个字符串</h3>
<p><img loading="lazy" decoding="async" width="885" height="24" src="/wp-content/uploads/2018/05/word-image-1404.png" class="wp-image-1569" srcset="/wp-content/uploads/2018/05/word-image-1404.png 885w, /wp-content/uploads/2018/05/word-image-1404-300x8.png 300w, /wp-content/uploads/2018/05/word-image-1404-768x21.png 768w" sizes="(max-width: 885px) 100vw, 885px" /></p>
<h3>readfile — 输出一个文件</h3>
<p><img loading="lazy" decoding="async" width="831" height="31" src="/wp-content/uploads/2018/05/word-image-1405.png" class="wp-image-1570" srcset="/wp-content/uploads/2018/05/word-image-1405.png 831w, /wp-content/uploads/2018/05/word-image-1405-300x11.png 300w, /wp-content/uploads/2018/05/word-image-1405-768x29.png 768w" sizes="(max-width: 831px) 100vw, 831px" /></p>
<h3>fopen()——打开文件</h3>
<p><img loading="lazy" decoding="async" width="758" height="93" src="/wp-content/uploads/2018/05/word-image-1406.png" class="wp-image-1571" srcset="/wp-content/uploads/2018/05/word-image-1406.png 758w, /wp-content/uploads/2018/05/word-image-1406-300x37.png 300w" sizes="(max-width: 758px) 100vw, 758px" /></p>
<p>
  打开模式
</p>
<p><img loading="lazy" decoding="async" width="752" height="235" src="/wp-content/uploads/2018/05/word-image-1407.png" class="wp-image-1572" srcset="/wp-content/uploads/2018/05/word-image-1407.png 752w, /wp-content/uploads/2018/05/word-image-1407-300x94.png 300w" sizes="(max-width: 752px) 100vw, 752px" /></p>
<p>
  注意：“w”是写操作，如果文件不存在就创建，如果文件存在就清空内容重新写操作。如果要继续在原来文件后天就内容，使用“a”追加。
</p>
<h3>fgets()读取一行，并且指针下移</h3>
<p><img loading="lazy" decoding="async" width="575" height="86" src="/wp-content/uploads/2018/05/word-image-1408.png" class="wp-image-1573" srcset="/wp-content/uploads/2018/05/word-image-1408.png 575w, /wp-content/uploads/2018/05/word-image-1408-300x45.png 300w" sizes="(max-width: 575px) 100vw, 575px" /></p>
<h3>fputs()写入一行，并且指针下移</h3>
<p>
  fputs()等价于fwrite()
</p>
<p><img loading="lazy" decoding="async" width="918" height="91" src="/wp-content/uploads/2018/05/word-image-1409.png" class="wp-image-1574" srcset="/wp-content/uploads/2018/05/word-image-1409.png 918w, /wp-content/uploads/2018/05/word-image-1409-300x30.png 300w, /wp-content/uploads/2018/05/word-image-1409-768x76.png 768w" sizes="(max-width: 918px) 100vw, 918px" /></p>
<h3>feof()文件指针是否到了文件结束的位置</h3>
<p><img loading="lazy" decoding="async" width="748" height="150" src="/wp-content/uploads/2018/05/word-image-1410.png" class="wp-image-1575" srcset="/wp-content/uploads/2018/05/word-image-1410.png 748w, /wp-content/uploads/2018/05/word-image-1410-300x60.png 300w" sizes="(max-width: 748px) 100vw, 748px" /></p>
<p>
  例题
</p>
<p><img loading="lazy" decoding="async" width="741" height="107" src="/wp-content/uploads/2018/05/word-image-1411.png" class="wp-image-1576" srcset="/wp-content/uploads/2018/05/word-image-1411.png 741w, /wp-content/uploads/2018/05/word-image-1411-300x43.png 300w" sizes="(max-width: 741px) 100vw, 741px" /></p>
<h3>fseek()复位指针</h3>
<p>
  如果一个文件要输出多次，后面的输出需要将指针复位到文件的最前面
</p>
<p><img loading="lazy" decoding="async" width="350" height="23" src="/wp-content/uploads/2018/05/word-image-1412.png" class="wp-image-1577" srcset="/wp-content/uploads/2018/05/word-image-1412.png 350w, /wp-content/uploads/2018/05/word-image-1412-300x20.png 300w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<h3>fread()读取文件</h3>
<p>
  语法：fread(文件指针，文件长度)
</p>
<p><img loading="lazy" decoding="async" width="830" height="69" src="/wp-content/uploads/2018/05/word-image-1413.png" class="wp-image-1578" srcset="/wp-content/uploads/2018/05/word-image-1413.png 830w, /wp-content/uploads/2018/05/word-image-1413-300x25.png 300w, /wp-content/uploads/2018/05/word-image-1413-768x64.png 768w" sizes="(max-width: 830px) 100vw, 830px" /></p>
<h3>unlink()：删除文件</h3>
<p><img loading="lazy" decoding="async" width="396" height="25" src="/wp-content/uploads/2018/05/word-image-1414.png" class="wp-image-1579" srcset="/wp-content/uploads/2018/05/word-image-1414.png 396w, /wp-content/uploads/2018/05/word-image-1414-300x19.png 300w" sizes="(max-width: 396px) 100vw, 396px" /></p>
<h3>is_file()：判断是否是文件</h3>
<h3>file_exists()：文件或文件夹是否存在</h3>
<p><img loading="lazy" decoding="async" width="667" height="70" src="/wp-content/uploads/2018/05/word-image-1415.png" class="wp-image-1580" srcset="/wp-content/uploads/2018/05/word-image-1415.png 667w, /wp-content/uploads/2018/05/word-image-1415-300x31.png 300w" sizes="(max-width: 667px) 100vw, 667px" /></p>
<h3>例题：诗歌的分页</h3>
<p>
  运行结果：点击页码显示不同的诗歌
</p>
<p><img loading="lazy" decoding="async" width="463" height="233" src="/wp-content/uploads/2018/05/word-image-1416.png" class="wp-image-1581" srcset="/wp-content/uploads/2018/05/word-image-1416.png 463w, /wp-content/uploads/2018/05/word-image-1416-300x151.png 300w" sizes="(max-width: 463px) 100vw, 463px" /></p>
<p>
  代码
</p>
<p>
  &lt;?php
</p>
<p>
  //第一步：读取诗歌的内容
</p>
<p>
  $fp=fopen(&#8216;./shi.txt&#8217;,&#8217;r&#8217;);
</p>
<p>
  $str=&#8221;;
</p>
<p>
  while(!feof($fp)) {
</p>
<p>
  	$str.=fgets($fp).'&lt;br&gt;&#8217;;
</p>
<p>
  }
</p>
<p>
  //第三步：获取页码
</p>
<p>
  $pageno=isset($_GET[&#8216;pageno&#8217;])?$_GET[&#8216;pageno&#8217;]:1;
</p>
<p>
  //第二步：分割字符串成数组
</p>
<p>
  $array=explode(&#8216;&#8211;&#8216;,$str);
</p>
<p>
  //显示内容
</p>
<p>
  echo $array[$pageno-1];
</p>
<p>
  echo &#8216;&lt;hr&gt;&#8217;;
</p>
<p>
  for($i=1;$i&lt;=count($array);$i++)
</p>
<p>
  	echo &#8220;&lt;a href=&#8217;?pageno={$i}&#8217;&gt;{$i}&lt;/a&gt;&amp;nbsp;&#8221;;
</p>
<p>
  ?&gt;
</p>
<h2>HTTP协议</h2>
<h3>简介</h3>
<ol>
<li><a href="http://baike.baidu.com/view/468465.htm" target="_blank">超文本传输协议</a>（HyperText Transfer Protocol)是<a href="http://baike.baidu.com/view/6825.htm" target="_blank">互联网</a>上应用最为广<a href="http://baike.baidu.com/view/16603.htm" target="_blank">网络协议</a>。所有的www文件都必须遵守这个标准。设计HTTP是为了发送和接收<a href="http://baike.baidu.com/view/692.htm" target="_blank">HTML</a>页面。
</li>
<li>
  http协议是B/S模式的访问方式
</li>
<li>
  断开式连接，服务器处理完客户端请求后立即关闭当前连接
</li>
<li>
  无状态性：服务器不记录用户的状态，也就是说用户多次访问服务器，服务器无法识别是否是同一个用户。
</li>
<li>
  http协议分为HTTP请求协议和http响应协议。
</li>
</ol>
<h3>http请求报文格式</h3>
<ol>
<li>
  http请求报文=请求行+请求头+空行+请求主体
</li>
</ol>
<p><img loading="lazy" decoding="async" width="187" height="163" src="/wp-content/uploads/2018/05/word-image-1417.png" class="wp-image-1582" /></p>
<ol>
<li>
  请求行：</p>
<ol>
<li>
    语法：请求方式+URL地址+协议版本
  </li>
<li>
    请求方式有：GET、POST
  </li>
<li>
    URL地址必须从根目录开始匹配
  </li>
<li>
    协议版本是“HTTP/1.1”
  </li>
<li>
    通过\r\n表示行结束
  </li>
</ol>
</li>
</ol>
<p><img loading="lazy" decoding="async" width="366" height="24" src="/wp-content/uploads/2018/05/word-image-1418.png" class="wp-image-1583" srcset="/wp-content/uploads/2018/05/word-image-1418.png 366w, /wp-content/uploads/2018/05/word-image-1418-300x20.png 300w" sizes="(max-width: 366px) 100vw, 366px" /></p>
<ol>
<li>
  请求头：
</li>
</ol>
<p><img loading="lazy" decoding="async" width="750" height="149" src="/wp-content/uploads/2018/05/word-image-1419.png" class="wp-image-1584" srcset="/wp-content/uploads/2018/05/word-image-1419.png 750w, /wp-content/uploads/2018/05/word-image-1419-300x60.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<ul>
<li>
<ol>
<li>
      格式：头标识:头数据
    </li>
</ol>
</li>
</ul>
<ol>
<li>
  请求主体</p>
<ol>
<li>
    如果是GET请求没有主体数据
  </li>
<li>
    如果是POST请求提交的数据就是主体数据
  </li>
</ol>
</li>
</ol>
<h3>PHP模拟GET请求</h3>
<p>
  客户端要访问页面1，通过页面1做代理去访问页面2
</p>
<p><img loading="lazy" decoding="async" width="735" height="96" src="/wp-content/uploads/2018/05/word-image-1420.png" class="wp-image-1585" srcset="/wp-content/uploads/2018/05/word-image-1420.png 735w, /wp-content/uploads/2018/05/word-image-1420-300x39.png 300w" sizes="(max-width: 735px) 100vw, 735px" /></p>
<p>
  代码实现
</p>
<p><img loading="lazy" decoding="async" width="1232" height="339" src="/wp-content/uploads/2018/05/word-image-1421.png" class="wp-image-1586" srcset="/wp-content/uploads/2018/05/word-image-1421.png 1232w, /wp-content/uploads/2018/05/word-image-1421-300x83.png 300w, /wp-content/uploads/2018/05/word-image-1421-768x211.png 768w, /wp-content/uploads/2018/05/word-image-1421-1024x282.png 1024w" sizes="(max-width: 1232px) 100vw, 1232px" /></p>
<h3>PHP模拟POST请求</h3>
<p><img loading="lazy" decoding="async" width="1168" height="282" src="/wp-content/uploads/2018/05/word-image-1422.png" class="wp-image-1587" srcset="/wp-content/uploads/2018/05/word-image-1422.png 1168w, /wp-content/uploads/2018/05/word-image-1422-300x72.png 300w, /wp-content/uploads/2018/05/word-image-1422-768x185.png 768w, /wp-content/uploads/2018/05/word-image-1422-1024x247.png 1024w" sizes="(max-width: 1168px) 100vw, 1168px" /></p>
<p>
  脚下留心：POST必须大写。
</p>
<p>
  在index.php页面中获取数据
</p>
<p><img loading="lazy" decoding="async" width="767" height="209" src="/wp-content/uploads/2018/05/word-image-1423.png" class="wp-image-1588" srcset="/wp-content/uploads/2018/05/word-image-1423.png 767w, /wp-content/uploads/2018/05/word-image-1423-300x82.png 300w" sizes="(max-width: 767px) 100vw, 767px" /></p>
<h3>http响应报文格式</h3>
<p><img loading="lazy" decoding="async" width="195" height="169" src="/wp-content/uploads/2018/05/word-image-1424.png" class="wp-image-1589" /></p>
<p>
  http响应报文由：响应行+响应头+空行+响应主体
</p>
<ol>
<li>
  响应行：协议版本+返回状态吗
</li>
</ol>
<p><img loading="lazy" decoding="async" width="156" height="25" src="/wp-content/uploads/2018/05/word-image-1425.png" class="wp-image-1590" srcset="/wp-content/uploads/2018/05/word-image-1425.png 156w, /wp-content/uploads/2018/05/word-image-1425-150x25.png 150w" sizes="(max-width: 156px) 100vw, 156px" /></p>
<ol>
<li>
  状态码分类总结</p>
<ol>
<li>
    2xx：正常
  </li>
<li>
    3xx：重定向错误
  </li>
<li>
    4xx：客户端错误
  </li>
<li>
    5xx：服务器错误
  </li>
</ol>
</li>
<li>
  常见状态码：</p>
<ol>
<li>
    200	正常
  </li>
<li>
    301	临时重定向    302	永久重定向
  </li>
<li>
    404	找不到文件
  </li>
<li>
    403	拒绝访问
  </li>
<li>
    500	服务器错误
  </li>
</ol>
</li>
<li>
  响应头
</li>
<li>
  响应主体：所有的输出都是响应主体
</li>
</ol>
<p><img loading="lazy" decoding="async" width="763" height="384" src="/wp-content/uploads/2018/05/word-image-1426.png" class="wp-image-1591" srcset="/wp-content/uploads/2018/05/word-image-1426.png 763w, /wp-content/uploads/2018/05/word-image-1426-300x151.png 300w" sizes="(max-width: 763px) 100vw, 763px" /></p>
<h3>操作响应头</h3>
<p>
  通过header()函数操作响应头
</p>
<p><img loading="lazy" decoding="async" width="760" height="65" src="/wp-content/uploads/2018/05/word-image-1427.png" class="wp-image-1592" srcset="/wp-content/uploads/2018/05/word-image-1427.png 760w, /wp-content/uploads/2018/05/word-image-1427-300x26.png 300w" sizes="(max-width: 760px) 100vw, 760px" /></p>
<p>
  脚下留心：header()函数用了操作响应头，在header()函数之前是不能有任何输出的。一旦有输出就表示响应头已经结束，不能操作头信息。
</p>
<p>
  可以通过更改输出缓存的大小使得header()前面可以有输出。
</p>
<p><img loading="lazy" decoding="async" width="693" height="35" src="/wp-content/uploads/2018/05/word-image-1428.png" class="wp-image-1593" srcset="/wp-content/uploads/2018/05/word-image-1428.png 693w, /wp-content/uploads/2018/05/word-image-1428-300x15.png 300w" sizes="(max-width: 693px) 100vw, 693px" /></p>
<p>
  将输出缓存改为off或0就表示关闭缓存
</p>
<h2>响应头的应用</h2>
<h3>文件下载</h3>
<p>
  正常情况下，浏览器接受到主体内容进行打开操作，通过操作响应头告诉浏览器将响应主体作为附件。
</p>
<p><img loading="lazy" decoding="async" width="694" height="169" src="/wp-content/uploads/2018/05/word-image-1429.png" class="wp-image-1594" srcset="/wp-content/uploads/2018/05/word-image-1429.png 694w, /wp-content/uploads/2018/05/word-image-1429-300x73.png 300w" sizes="(max-width: 694px) 100vw, 694px" /></p>
<p>
  图片下载
</p>
<p><img loading="lazy" decoding="async" width="791" height="128" src="/wp-content/uploads/2018/05/word-image-1430.png" class="wp-image-1595" srcset="/wp-content/uploads/2018/05/word-image-1430.png 791w, /wp-content/uploads/2018/05/word-image-1430-300x49.png 300w, /wp-content/uploads/2018/05/word-image-1430-768x124.png 768w" sizes="(max-width: 791px) 100vw, 791px" /></p>
<p>
  octet：八位字节
</p>
<p>
  stream：流
</p>
<h3>控制器浏览器缓存</h3>
<p><img loading="lazy" decoding="async" width="1185" height="177" src="/wp-content/uploads/2018/05/word-image-1431.png" class="wp-image-1596" srcset="/wp-content/uploads/2018/05/word-image-1431.png 1185w, /wp-content/uploads/2018/05/word-image-1431-300x45.png 300w, /wp-content/uploads/2018/05/word-image-1431-768x115.png 768w, /wp-content/uploads/2018/05/word-image-1431-1024x153.png 1024w" sizes="(max-width: 1185px) 100vw, 1185px" /></p>
<p>
  Expires：过期时间
</p>
<h2>页面静态化</h2>
<table>
<tr>
<td></td>
<td>
<p>
  静态页面
</p>
</td>
<td>
<p>
  动态页面
</p>
</td>
</tr>
<tr>
<td>
<p>
  执行效率
</p>
</td>
<td>
<p>
  高
</p>
</td>
<td>
<p>
  低
</p>
</td>
</tr>
<tr>
<td>
<p>
  数据修改
</p>
</td>
<td>
<p>
  不方便
</p>
</td>
<td>
<p>
  方便
</p>
</td>
</tr>
</table>
<p>
  页面静态化可以将静态页面和动态页面的优点结合起来。
</p>
<h3>通过输出缓存实现页面静态化</h3>
<p>
  原理：将缓存中的生成完毕的静态的HTML读取出来 并写到静态文件中
</p>
<p><img loading="lazy" decoding="async" width="898" height="109" src="/wp-content/uploads/2018/05/word-image-1432.png" class="wp-image-1597" srcset="/wp-content/uploads/2018/05/word-image-1432.png 898w, /wp-content/uploads/2018/05/word-image-1432-300x36.png 300w, /wp-content/uploads/2018/05/word-image-1432-768x93.png 768w" sizes="(max-width: 898px) 100vw, 898px" /></p>
<h3>通过file_get_contents实现页面静态化</h3>
<p><img loading="lazy" decoding="async" width="986" height="51" src="/wp-content/uploads/2018/05/word-image-1433.png" class="wp-image-1598" srcset="/wp-content/uploads/2018/05/word-image-1433.png 986w, /wp-content/uploads/2018/05/word-image-1433-300x16.png 300w, /wp-content/uploads/2018/05/word-image-1433-768x40.png 768w" sizes="(max-width: 986px) 100vw, 986px" /></p>
<h3>通过curl扩展实现页面静态化</h3>
<p>
  要在php.ini中开启curl扩展
</p>
<p><img loading="lazy" decoding="async" width="327" height="23" src="/wp-content/uploads/2018/05/word-image-1434.png" class="wp-image-1599" srcset="/wp-content/uploads/2018/05/word-image-1434.png 327w, /wp-content/uploads/2018/05/word-image-1434-300x21.png 300w" sizes="(max-width: 327px) 100vw, 327px" /></p>
<p>
  例题
</p>
<p><img loading="lazy" decoding="async" width="883" height="198" src="/wp-content/uploads/2018/05/word-image-1435.png" class="wp-image-1600" srcset="/wp-content/uploads/2018/05/word-image-1435.png 883w, /wp-content/uploads/2018/05/word-image-1435-300x67.png 300w, /wp-content/uploads/2018/05/word-image-1435-768x172.png 768w" sizes="(max-width: 883px) 100vw, 883px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/php/1554.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
