>  기사  >  백엔드 개발  >  페이지 정적화의 몇 가지 일반적인 방법을 숙지하세요

페이지 정적화의 몇 가지 일반적인 방법을 숙지하세요

WBOY
WBOY원래의
2016-08-08 09:31:13834검색

페이지 정적화에는 두 가지 유형이 있다고 흔히 알려져 있는데, 하나는 의사 정적, 즉 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>?>
Memcached는 키와 값이 일대일로 대응합니다. 기본 키 크기는 128바이트를 초과할 수 없으며 기본 값 크기는 1M입니다. 따라서 1M 크기는 대부분의 웹 페이지의 저장 요구 사항을 충족할 수 있습니다.

위 내용은 페이지 정적화와 관련된 방법입니다. 친구들에게 도움이 되길 바랍니다

우수한 기술 기사는 매일 www.phpskill.com에 업데이트됩니다
PHP 순수 기술 학습 교류회 : 323899029

원본 텍스트: http://www.phpskill.com/html/show-1-4418-1.html

위에서는 몇 가지 측면을 포함하여 페이지를 정적화하는 몇 가지 일반적인 방법을 소개했습니다. 이것이 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.