>  기사  >  백엔드 개발  >  PHP를 사용하여 HTML 페이지를 정적으로 만드는 방법

PHP를 사용하여 HTML 페이지를 정적으로 만드는 방법

墨辰丷
墨辰丷원래의
2018-06-06 14:02:231513검색

이 글은 주로 PHP에서 HTML 페이지를 정적화하는 방법을 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

일반적으로 다음 측면에서 최적화합니다.

  • 동적 페이지 정적화

  • 데이터베이스 최적화

  • 로드 밸런싱 사용

  • 캐싱 사용

  • CDN 가속 사용

이제 많은 웹 사이트를 구축할 때 정적으로 처리해야 합니다. 왜 웹 사이트를 정적으로 처리해야 합니까? 순수 정적 웹사이트는 모든 웹페이지가 독립적인 HTML 페이지로 구성된 웹사이트라는 것은 모두가 알고 있는 사실이며, 방문 시 데이터 처리 없이 파일을 직접 읽을 수 있으며, 검색에 매우 유용합니다. 엔진에도 매우 친숙합니다.
웹사이트에서는 순수 정적 웹사이트를 어떻게 구현하나요?
순수한 정적 제작 기술에서는 먼저 웹 사이트의 페이지를 요약하고 여러 스타일로 나눈 다음 이러한 페이지를 템플릿으로 만드는 것이 필요합니다. 생성할 때 먼저 소스 파일을 읽은 다음 .html로 끝나는 독립적인 파일을 생성해야 합니다. .page 파일이므로 순수 정적 웹 사이트에는 더 많은 공간이 필요하지만 실제로는 특히 중소기업 웹 사이트의 경우 필요한 공간이 그다지 크지 않습니다. 기술적으로 말하면 대규모 웹 사이트는 전체 사이트에 대해 순수 정적을 달성하기를 원합니다. 변환하기가 더 어렵고 생성 시간이 너무 깁니다. 그러나 중소 규모 웹사이트에서는 여전히 순전히 정적 비교를 사용하고 있으며 이는 많은 장점을 가지고 있습니다.

동적 웹사이트는 어떻게 정적으로 처리되나요? 페이지 정적화는 동적 페이지를 html/htm 정적 페이지로 바꾸는 것을 의미합니다. 동적 페이지는 일반적으로 관리하기 매우 쉬운 asp, php, jsp, .net 및 기타 프로그래밍 언어로 작성됩니다. 그러나 웹페이지에 접근할 때 프로그램이 이를 먼저 처리해야 하기 때문에 접근 속도가 상대적으로 느립니다. 정적 페이지는 액세스가 빠르지만 관리가 어렵습니다. 그러면 동적 페이지의 정적 페이지가 두 페이지의 이점을 결합할 수 있습니다.

정적 처리는 웹사이트에 어떤 이점을 가져오나요?

  • 정적 페이지는 동적 페이지보다 검색 엔진에서 색인을 생성하기가 더 쉽습니다.

  • 정적인 페이지에 접근하는 데에는 프로그램 처리가 필요하지 않으므로 실행 속도를 향상시킬 수 있습니다.

  • 서버 부하를 줄여보세요.

  • HTML 페이지는 Asp 관련 취약점의 영향을 받지 않습니다.

정적 처리된 웹사이트는 정적 처리가 없는 웹사이트보다 더 안전합니다. 왜냐하면 정적 웹사이트는 해커가 공격할 첫 번째 선택이 아니며, 해커가 사용자의 백그라운드 시스템을 모르기 때문입니다. 전경. 동시에, 어느 정도의 안정성도 갖추고 있습니다. 예를 들어, 데이터베이스나 웹사이트 프로그램에 문제가 있어도 정적으로 처리되는 페이지를 방해하지 않으며 페이지가 열리지 않습니다. 프로그램이나 데이터의 영향을 받습니다.

검색 엔진 스파이더 프로그램은 스파이더 프로그램의 작업 부하를 줄일 수 있는 이러한 URL을 선호합니다. 일부 사람들은 이제 검색 엔진이 동적 URL을 완전히 크롤링하고 식별할 수 있다고 생각하지만 여전히 정적 URL을 사용할 수 있는 것이 좋습니다. 가능한 한 정적으로 만들어야 합니다.

이제 주로 페이지 정적화의 개념에 대해 이야기하겠습니다. 도움이 되셨으면 좋겠습니다!
HTML 정적화란 무엇입니까:

페이지 정적화는 두 가지 유형으로 나누어진다고 흔히 말합니다. 하나는 pseudo-static, 즉 URL 재작성이고 다른 하나는 진정한 정적화입니다. .
PHP 웹사이트 개발에서는 웹사이트 홍보 및 SEO 요구에 따라 웹사이트를 전체적으로 또는 부분적으로 정적화해야 합니다. PHP 템플릿 사용, 캐싱 등 PHP에서 정적 HTML 페이지를 생성하는 방법에는 여러 가지가 있습니다. 페이지 안정화를 달성합니다.
PHP 정적에 대한 간단한 이해는 웹 사이트에서 생성된 페이지를 정적 HTML 형식으로 방문자 앞에 표시하는 것입니다. PHP 정적화는 순수 정적화와 의사 정적화로 구분됩니다. PHP 생성 정적 페이지의 처리 메커니즘이 다릅니다.
PHP 의사 정적: Apache mod_rewrite를 사용하여 URL 재작성을 구현하세요.

정적 HTML의 이점:

1. 시스템 데이터베이스를 호출하지 않고 웹을 검색하여 서버의 부하를 줄입니다.
2. 검색 엔진 최적화(SEO)에 도움이 됩니다. Baidu와 Google은 빠르게 포함할 뿐만 아니라 모든 페이지를 포함하는 것을 우선시합니다.
속도 향상. 열기 속도. 정적 페이지를 더 빠르게 열기 위해 데이터베이스에 연결할 필요가 없습니다. 페이지가 크게 개선되었습니다. 4.
웹사이트가 더욱 안전해졌으며 HTML 페이지는 PHP 프로그램과 관련된 취약점의 영향을 받지 않습니다. ; 더 큰 웹사이트를 보면 기본적으로 정적 페이지이므로 공격을 줄이고 SQL 주입을 방지할 수 있습니다. 데이터베이스 오류가 발생하더라도 웹사이트의 정상적인 접속에는 영향을 미치지 않습니다. 5.
데이터베이스 오류가 발생해도 웹사이트의 정상적인 접속에는 영향을 미치지 않습니다. 가장 중요한 것은 액세스 속도를 높이고 서버의 부하를 줄일 수 있다는 것입니다. 데이터 양이 수만, 수십만 또는 그 이상이면 어느 것이 더 빠른지 알 수 있습니다. 검색 엔진에서 찾을 수 있습니다. HTML 문서를 생성하는 작업이 더 번거롭고 절차도 더 복잡하지만 검색을 더 편리하게 하고 더 빠르고 안전하게 하기 위해서는 이러한 희생이 여전히 가치가 있습니다. HTML 정적화를 달성하기위한 전략 및 예제의 탐구 :

기본 메소드
file_put_contents () 함수 php 내장 캐싱 메커니즘을 사용하여 페이지 정적화를 달성하기위한 내장 캐싱 메커니즘-아웃 푸트 파열. 방법 1: PHP 템플릿을 사용하여 정적 페이지 생성PHP 템플릿은 정적 웹 사이트를 구현하기 위해 PHP Smarty를 설치하고 사용하는 등 정적화를 구현하는 데 매우 편리합니다.
Smarty를 사용하면 페이지를 정적으로 만들 수도 있습니다. Smarty를 사용할 때 일반적인 동적 읽기 방법에 대해 간략하게 이야기하겠습니다.

일반적으로 다음 단계로 나뉩니다.

1. URL을 통해 매개변수(ID)를 전달합니다. 3. 데이터를 얻은 후 필요에 따라 표시 내용을 수정합니다. . 표시해야 하는 데이터를 지정합니다. ;

5.

스마트한 정적화 프로세스는 위 프로세스에 두 단계만 추가하면 됩니다. 첫 번째: 버퍼를 열려면 1 앞에 ob_start()를 사용하세요. 두 번째: 5 이후에 ob_get_contents()를 사용하여 메모리 출력되지 않은 콘텐츠를 가져온 다음 fwrite()를 사용하여 해당 콘텐츠를 대상 html 파일에 씁니다. 위 설명에 따르면 이 프로세스는 웹사이트의 프런트엔드에서 구현되는 반면 콘텐츠 관리(추가, 수정, 삭제)는 일반적으로 백그라운드에서 수행됩니다. 위 프로세스를 효과적으로 활용하려면 작은 도구를 사용할 수 있습니다. 즉, Header()를 의미합니다. 구체적인 프로세스는 다음과 같습니다. 프로그램을 추가하고 수정한 후 Header()를 사용하여 페이지를 HTML화할 수 있도록 전경으로 점프하고, HTML을 생성한 후 배경 관리 측면으로 다시 점프합니다. 프로세스가 보이지 않습니다.



방법 2: PHP 파일 읽기 및 쓰기 기능을 사용하여 정적 페이지 생성

<? 
$out1 = "<html><head><title>PHP网站静态化教程</title></head><body>欢迎访问PHP网站开发教程网www.leapsoul.cn,本文主要介绍PHP网站页面静态化的方法</body></html>"; 
$fp = fopen("leapsoulcn.html","w"); 
if(!$fp) 
{ 
echo "System Error"; 
exit(); 
} 
else 
{ 
fwrite($fp,$out1); 
fclose($fp); 
echo "Success"; 
} 
?>



방법 3: PHP 출력 제어 기능(Output Control)/ob 캐싱 메커니즘을 사용하여 정적 페이지 생성

출력 제어 기능 (출력 제어) 캐시를 사용 및 제어하여 정적 HTML 페이지를 생성하고, PHP 파일 읽기 및 쓰기 기능도 사용하는 것입니다.
예를 들어, 제품의 동적 상세 페이지 주소는 http://xxx.com?goods.php?gid=112
여기서는 이 주소를 기반으로 상세 페이지의 내용을 읽은 후 저장합니다. 다음 누군가가 이 제품 세부정보 페이지의 동적 주소를 방문하면 생성된 해당 정적 콘텐츠 파일을 직접 출력할 수 있습니다.

PHP는 정적 페이지 예제 코드 1

<? 
ob_start(); 
echo "<html>". 
"<head>". 
"<title>PHP网站静态化教程</title>". 
"</head>". 
"<body>欢迎访问脚本之家,本文主要介绍PHP网站页面静态化的方法</body>". 
"</html>"; 
$out1 = ob_get_contents(); 
ob_end_clean(); 
$fp = fopen("leapsoulcn.html","w"); 
if(!$fp) 
{ 
echo "System Error"; 
exit(); 
} 
else 
{ 
fwrite($fp,$out1); 
fclose($fp); 
echo "Success"; 
} 
?>
을 생성합니다.PHP는 정적 페이지 예제 코드 2

<?php 
$gid = $_GET[&#39;gid&#39;]+0;//商品id 
$goods_statis_file = "goods_file_".$gid.".html";//对应静态页文件 
$expr = 3600*24*10;//静态文件有效期,十天 
if(file_exists($goods_statis_file)){ 
 $file_ctime =filectime($goods_statis_file);//文件创建时间 
 if($file_ctime+$expr-->time()){//如果没过期 
  echo file_get_contents($goods_statis_file);//输出静态文件内容 
  exit; 
 }else{//如果已过期 
  unlink($goods_statis_file);//删除过期的静态页文件 
  ob_start(); 
 
  //从数据库读取数据,并赋值给相关变量 
 
  //include ("xxx.html");//加载对应的商品详情页模板 
 
  $content = ob_get_contents();//把详情页内容赋值给$content变量 
  file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中 
  ob_end_flush();//输出商品详情页信息 
 } 
}else{ 
 ob_start(); 
 
 //从数据库读取数据,并赋值给相关变量 
 
 //include ("xxx.html");//加载对应的商品详情页模板 
 
 $content = ob_get_contents();//把详情页内容赋值给$content变量 
 file_put_contents($goods_statis_file,$content);//写入内容到对应静态文件中 
 ob_end_flush();//输出商品详情页信息 
 
} 
 
?>

을 생성합니다. 웹사이트 개발에는 PHP가 사용되며 일반적으로 실행 결과가 브라우저에 직접 출력되는 것으로 알고 있습니다. PHP를 사용하여 정적 페이지를 생성하려면 캐시 영역의 내용을 얻기 위해 출력 제어 기능을 사용하여 캐시 영역을 제어한 다음 이를 정적 HTML 페이지 파일로 출력하여 정적 웹사이트를 구현해야 합니다.

PHP生成静态页面的思路为:首先开启缓存,然后输出了HTML内容(你也可以通过include将HTML内容以文件形式包含进来),之后获取缓存中的内容,清空缓存后通过PHP文件读写函数将缓存内容写入到静态HTML页面文件中。
获得输出的缓存内容以生成静态HTML页面的过程需要使用三个函数:ob_start()、ob_get_contents()、ob_end_clean()。
 
知识点:
1、ob_start函数一般主要是用来开启缓存,注意使用ob_start之前不能有任何输出,如空格、字符等。
2、ob_get_contents函数主要用来获取缓存中的内容以字符串形式返回,注意此函数必须在ob_end_clean函数之前调用,否则获取不到缓存内容。
3、ob_end_clean函数主要是清空缓存中的内容并关闭缓存,成功则返回True,失败则返回False
 方法4:使用nosql从内存中读取内容(其实这个已经不算静态化了而是缓存);以memcache为例:

<?php 
$gid = $_GET[&#39;gid&#39;]+0;//商品id 
$goods_statis_content = "goods_content_".$gid;//对应键 
$expr = 3600*24*10;//有效期,十天 
$mem = new Memcache; 
$mem--->connect(&#39;memcache_host&#39;, 11211); 
$mem_goods_content = $mem->get($goods_statis_content);  
if($mem_goods_content){ 
 echo $mem_goods_content; 
}else{ 
 ob_start(); 
 
 //从数据库读取数据,并赋值给相关变量 
 
 //include ("xxx.html");//加载对应的商品详情页模板 
 
 $content = ob_get_contents();//把详情页内容赋值给$content变量 
 $mem->add($goods_statis_content,$content, false, $expr); 
 ob_end_flush();//输出商品详情页信息 
 
} 
 
?>

 memcached是键值一一对应,key默认最大不能超过128个字节,value默认大小是1M,因此1M大小满足大多数网页大小的存储。

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

PHP闭包函数的含义

PHP中socket如何发送HTTP请求

PHP如何安装pear扩展及解压技巧

위 내용은 PHP를 사용하여 HTML 페이지를 정적으로 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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