찾다
php教程php手册php页面静态化笔记

php页面静态化笔记

Jun 06, 2016 am 09:52 AM
php암호오픈 소스프로그램 작성프로그래밍 언어소프트웨어 개발공전

<span style="color: #000000;">php
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
 * php页面静态化
 * 静态化分为 真静态和伪静态
 * 静态化的有点在于 SEO 和 安全性 使用缓存机制还可以大大提高网站的速度
 </span><span style="color: #008000;">*/</span>

<span style="color: #008000;">/*</span><span style="color: #008000;">*
 * php自带的缓存机制
 * 需要在php.ini中进行配置
 * 或者使用ob_start()-> output_buffering:on
 * 关于几个缓存的函数:ob_start();ob_clean();ob_get_content();ob_end_clean();关闭缓存同时清空
 * ob_flush();输出缓存里面的内容并且清空,但是不关闭 ob_end_flush();关闭同时输出
 </span><span style="color: #008000;">*/</span>

<span style="color: #008000;">/**/</span>
<span style="color: #008080;">ob_start</span>();<span style="color: #008000;">//</span><span style="color: #008000;">开启缓存</span>
<span style="color: #0000ff;">echo</span> 'yyy';<span style="color: #008000;">//</span><span style="color: #008000;">没有开启缓存的情况下会报错,因为没有遇到header的时候,php默认发送一个header,这个header无法修改</span>
<span style="color: #008080;">header</span>('content-type:text/htm;charset=utf-8'<span style="color: #000000;">);
</span><span style="color: #0000ff;">echo</span> '123'<span style="color: #000000;">;
</span><span style="color: #008080;">ob_get_contents</span>();<span style="color: #008000;">//</span><span style="color: #008000;">得到缓存的内容</span>
<span style="color: #008080;">ob_end_clean</span><span style="color: #000000;">();
</span><span style="color: #0000ff;">echo</span> 'aa';<span style="color: #008000;">//</span><span style="color: #008000;">放在程序缓存里面</span>
<span style="color: #008080;">header</span>('content-type:text/htm;charset=utf-8');<span style="color: #008000;">//</span><span style="color: #008000;">运行的时候会报错,因为缓存已经关闭</span>


<span style="color: #008000;">/*</span><span style="color: #008000;">
 * 利用php自带的缓存机制做真缓存
 * 真缓存的页面的内容应该是长期都不需要变的,并且不同用户看到的东西都是一样的
 * 原理:用户第一次访问的时候查询数据库,然后得到缓存区的内容,并且放到缓存文件里面
 * </span><span style="color: #008000;">*/</span>
<span style="color: #008000;">/*</span><span style="color: #008000;">*
 </span><span style="color: #008000;">*/</span>
<span style="color: #008080;">ob_start</span><span style="color: #000000;">();
</span><span style="color: #008000;">//</span><span style="color: #008000;">判断缓存文件是否存在</span>
<span style="color: #800080;">$html_filename</span>='static.html'<span style="color: #000000;">;
</span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">file_exists</span>(<span style="color: #800080;">$html_filename</span>) &&  (<span style="color: #008080;">filemtime</span>(<span style="color: #800080;">$html_filename</span>)+30) > <span style="color: #008080;">time</span>())<span style="color: #008000;">//</span><span style="color: #008000;">超过30秒则重新生成</span>
<span style="color: #000000;">{
    </span><span style="color: #008000;">//</span><span style="color: #008000;">直接取出缓存页面的内容</span>
    <span style="color: #0000ff;">echo</span> <span style="color: #008080;">file_get_contents</span>(<span style="color: #800080;">$html_filename</span><span style="color: #000000;">);
    </span><span style="color: #0000ff;">exit</span><span style="color: #000000;">;
    
} 
</span><span style="color: #0000ff;">echo</span> 'Your content'<span style="color: #000000;">;
</span><span style="color: #800080;">$html_content</span>=<span style="color: #008080;">ob_get_contents</span><span style="color: #000000;">();
</span><span style="color: #800080;">$html_filename</span>='static.html'<span style="color: #000000;">;
</span><span style="color: #008080;">file_put_contents</span>(<span style="color: #800080;">$html_filename</span>,<span style="color: #800080;">$html_content</span><span style="color: #000000;">);

</span><span style="color: #008000;">/*</span><span style="color: #008000;">
 *  * 上述原理的缺陷:1.实时性不够  2.不利于seo优化
 * 解决办法:在数据库发生增加和更新的时候更新缓存文件
 * </span><span style="color: #008000;">*/</span>

<span style="color: #0000ff;">if</span>(<span style="color: #800080;">$_REQUEST</span>['act'] == 'add')<span style="color: #008000;">//</span><span style="color: #008000;">update 也是</span>
<span style="color: #000000;">{
  </span><span style="color: #008000;">//</span><span style="color: #008000;">先获取模版文件</span>
  <span style="color: #800080;">$template_content</span>=<span style="color: #008080;">file_get_contents</span>('template.tpl'<span style="color: #000000;">);
  </span><span style="color: #008000;">//</span><span style="color: #008000;">替换标签</span>
  <span style="color: #800080;">$php_content</span>=<span style="color: #008080;">str_replace</span>("{",'<?php echo ',<span style="color: #800080;">$template_content<span style="color: #000000;">);
  </span><span style="color: #800080;">$php_content</span>=<span style="color: #008080;">str_replace</span>("}",'?>',<span style="color: #800080;">$template_content</span><span style="color: #000000;">);
  </span><span style="color: #008000;">//</span><span style="color: #008000;">生成缓存文件</span>
  <span style="color: #800080;">$php_tplname</span>='php_tpl.php'<span style="color: #000000;">;
  </span><span style="color: #008080;">file_put_contents</span>(<span style="color: #800080;">$php_tplname</span>,<span style="color: #800080;">$php_content</span><span style="color: #000000;">);
  </span><span style="color: #0000ff;">include</span>(<span style="color: #008080;">file_put_contents</span><span style="color: #000000;">);
  </span><span style="color: #800080;">$html_content</span>=<span style="color: #008080;">ob_get_contents</span><span style="color: #000000;">();
  </span><span style="color: #800080;">$html_filename</span>='static.html'<span style="color: #000000;">;
  </span><span style="color: #008080;">file_put_contents</span>(<span style="color: #800080;">$html_filename</span>,<span style="color: #800080;">$html_content</span><span style="color: #000000;">);
  
}

</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
 * 真静态的缺陷:生成的 缓存文件很多,占硬盘
 * 对于海量的html生成,可以考虑用伪静态
 </span><span style="color: #008000;">*/</span>

<span style="color: #800080;">$str</span>='123,33,333'<span style="color: #000000;">;
</span><span style="color: #008080;">preg_match</span>('/\d\d\d\d/is',<span style="color: #800080;">$str</span>,<span style="color: #800080;">$arr</span>);<span style="color: #008000;">//</span><span style="color: #008000;">匹配连续四个出现的数字 返回到arr 只是匹配一个 arr[0]</span>
<span style="color: #008080;">preg_match</span>('/(\d)(\d)/is',<span style="color: #800080;">$str</span>,<span style="color: #800080;">$arr</span>);<span style="color: #008000;">//</span><span style="color: #008000;">这时候arr返回三个 0放置匹配的字符串,arr[n]按照表达式顺序返回匹配的字符串

//对于需要全部匹配的使用preg_match_all()函数;正则表达式里面需要'' 不要使用""</span>

<span style="color: #008000;">/*</span><span style="color: #008000;">*
 * 使用apache的rewrite机制
 * 注意点:apache的配置 开启rewrite module 也要设置derectory的权限 allowoverride from all 
 * 文件 .htacss //匹配规则是从上而下的,可以设置error页面
 * RewireEngine On
 * news-id(\d)\.html$  news.php?id=$1
 * news-id(\d).html$    error.php      #错误页面放到最后
 </span><span style="color: #008000;">*/</span>
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기