페이지 정적화에는 두 가지 유형이 있다고 흔히 알려져 있는데, 하나는 의사 정적, 즉 URL 재작성이고 다른 하나는 진정한 정적화입니다. 진정한 정적화에 집중해 봅시다.
PHP 정적이란 무엇입니까
PHP 정적화에 대한 간단한 이해는 웹 사이트에서 생성된 페이지가 방문자 앞에 정적 HTML 형식으로 표시되도록 하는 것입니다. PHP 정적화는 순수 정적화와 의사 정적화로 구분됩니다. 둘 사이의 차이점은 다음과 같은 처리 메커니즘에 있습니다. 정적 페이지를 생성하는 PHP입니다.
웹페이지를 정적으로 만드는 이유
1. 페이지 열기 및 탐색 속도가 빨라집니다. 정적 페이지는 데이터베이스에 연결할 필요가 없으며 동적 페이지보다 훨씬 빠릅니다.
2. 검색 엔진 최적화(SEO)에 도움이 됩니다. Baidu와 Google은 빠르게 포함될 뿐만 아니라 완전히 포함되는 정적 페이지를 포함하는 데 우선순위를 둡니다.
3. 서버의 부담을 줄이고 시스템 데이터베이스를 호출하지 않고도 웹을 탐색할 수 있습니다.
4. 웹사이트는 더욱 안전해졌으며 HTML 페이지는 PHP 관련 취약점의 영향을 받지 않습니다. 대규모 웹사이트를 보면 기본적으로 정적 페이지이므로 공격을 줄이고 SQL 주입을 방지할 수 있습니다.
데이터베이스 오류가 발생하더라도 웹사이트의 정상적인 접속에는 영향을 미치지 않습니다.
HTML 문서를 생성하는 작업이 더 까다롭고 절차도 더 복잡하지만, 더 편리하고 더 빠르고 더 안전한 검색을 위해서는 이러한 희생이 여전히 가치가 있습니다.
PHP로 정적 HTML 페이지를 생성하는 방법
PHP 템플릿을 사용하여 정적 페이지 생성
예를 들어, PHP Smarty를 설치하여 정적 웹 사이트를 구현하는 것은 매우 편리합니다. 또한 일반적인 템플릿 규칙을 사용하여 다양한 CMS 템플릿을 모방할 수도 있습니다.
1. PHP 파일 읽기 및 쓰기 기능과 ob 캐싱 메커니즘을 사용하여 정적 페이지를 생성합니다
예를 들어, 특정 상품의 동적 상세 페이지 주소는 다음과 같습니다: http://xxx.com?goods.php?gid=112
따라서 여기서는 이 주소를 기반으로 이 세부정보 페이지의 내용을 읽은 다음 이를 정적 페이지로 저장합니다. 다음에 누군가가 이 제품 세부정보 페이지의 동적 주소를 방문하면
생성된 해당 정적 콘텐츠 파일을 직접 출력합니다.
<!--?<span>php </span><span>$gid</span> = <span>$_GET</span>['gid']+0;<span>//</span><span>商品id</span> <span>$goods_statis_file</span> = "goods_file_".<span>$gid</span>.".html";<span>//</span><span>对应静态页文件</span> <span>$expr</span> = 3600*24*10;<span>//</span><span>静态文件有效期,十天</span> <span>if</span>(<span>file_exists</span>(<span>$goods_statis_file</span><span>)){ </span><span>$file_ctime</span> =<span>filectime</span>(<span>$goods_statis_file</span>);<span>//</span><span>文件创建时间 </span> <span>if</span>(<span>$file_ctime</span>+<span>$expr</span>--><span>time</span>()){<span>//</span><span>如果没过期</span> <span>echo</span> <span>file_get_contents</span>(<span>$goods_statis_file</span>);<span>//</span><span>输出静态文件内容</span> <span>exit</span><span>; }</span><span>else</span>{<span>//</span><span>如果已过期</span> <span>unlink</span>(<span>$goods_statis_file</span>);<span>//</span><span>删除过期的静态页文件</span> <span>ob_start</span><span>(); </span><span>//</span><span>从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板</span> <span>$content</span> = <span>ob_get_contents</span>();<span>//</span><span>把详情页内容赋值给$content变量</span> <span>file_put_contents</span>(<span>$goods_statis_file</span>,<span>$content</span>);<span>//</span><span>写入内容到对应静态文件中</span> <span>ob_end_flush</span>();<span>//</span><span>输出商品详情页信息</span> <span> } }</span><span>else</span><span>{ </span><span>ob_start</span><span>(); </span><span>//</span><span>从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板</span> <span>$content</span> = <span>ob_get_contents</span>();<span>//</span><span>把详情页内容赋值给$content变量</span> <span>file_put_contents</span>(<span>$goods_statis_file</span>,<span>$content</span>);<span>//</span><span>写入内容到对应静态文件中</span> <span>ob_end_flush</span>();<span>//</span><span>输出商品详情页信息</span> <span> } </span>?>
2. nosql을 사용하여 메모리에서 콘텐츠를 읽습니다(사실 더 이상 정적이 아니고 캐시됩니다).
Memcache를 예로 들어보겠습니다.
<!--?<span>php </span><span>$gid</span> = <span>$_GET</span>['gid']+0;<span>//</span><span>商品id</span> <span>$goods_statis_content</span> = "goods_content_".<span>$gid</span>;<span>//</span><span>对应键</span> <span>$expr</span> = 3600*24*10;<span>//</span><span>有效期,十天</span> <span>$mem</span> = <span>new</span><span> Memcache; </span><span>$mem</span>--->connect('memcache_host', 11211<span>); </span><span>$mem_goods_content</span> = <span>$mem</span>->get(<span>$goods_statis_content</span><span>); </span><span>if</span>(<span>$mem_goods_content</span><span>){ </span><span>echo</span> <span>$mem_goods_content</span><span>; }</span><span>else</span><span>{ </span><span>ob_start</span><span>(); </span><span>//</span><span>从数据库读取数据,并赋值给相关变量 //include ("xxx.html");//加载对应的商品详情页模板</span> <span>$content</span> = <span>ob_get_contents</span>();<span>//</span><span>把详情页内容赋值给$content变量</span> <span>$mem</span>->add(<span>$goods_statis_content</span>,<span>$content</span>, <span>false</span>, <span>$expr</span><span>); </span><span>ob_end_flush</span>();<span>//</span><span>输出商品详情页信息</span> <span> } </span>?>
위 내용은 페이지 정적화와 관련된 방법입니다. 친구들에게 도움이 되길 바랍니다
우수한 기술 기사는 매일 www.phpskill.com에 업데이트됩니다
PHP 순수 기술 학습 교류회 : 323899029
원본 텍스트: http://www.phpskill.com/html/show-1-4418-1.html
위에서는 몇 가지 측면을 포함하여 페이지를 정적화하는 몇 가지 일반적인 방법을 소개했습니다. 이것이 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.