일. 서언
요즘 집을 찾아 이사하는데 풋풋한 표백으로 매년 집을 바꾸는 게 습관이 됐지만 그래도 이렇게 큰 도시에서는 몸과 영혼을 담는다.
이 글은 주로 php가 정적 페이지를 생성하는 대략적인 단계를 기록하는데, 페이지의 정적화에 대해서는 모두가 들어봤을 것이지만, 실제로 사용할 때는 오히려 매우 좋지 않다.많은 페이지입니다. 어떤 페이지들은 접속량이 많고 페이지 구조가 자주 바뀌지 않는 것을 고려합니다. 예를 들어 뉴스 게시물 등, 정적 페이지를 만들어 서버에 두는 것을 고려할 수 있습니다. 첫째, 큰 트래픽에 대한 접속을 견디는 것, 둘째, 더 안전하며, 열림 속도가 보장됩니다.
2. 본문
1.정적화란 무엇인가
예를 들어 우리가 평소에 프로젝트를 쓸 때 대부분의 페이지에 파라미터가 들어가 php 태그를 통해 이를 보여준다.왜냐하면 우리의 파라미터는 언제든지 가능하기 때문이다.변화하기 때문에 페이지 내용도 파라미터에 따라 변화하는 것이 동적 페이지입니다.반면 정적화는 순수한 html로 php나 자바 같은 프로그래밍 언어로 내용을 바꿀 필요가 없다.
정적인 것의 장점에 대해서 인터넷에서도 분명히 말하고 있습니다.이쪽은 더 이상 일일이 장황하게 말하지 않습니다.어쨌든 열기가 빨라 많은 트래픽의 접속을 막을 수 있습니다.
2,정적화 표기법
(1) 첫 번째 쓰기 방법은 ob_start() 캐시를 통해 출력한다
php 파일에 HTML 코드를 쓰고 bo_get_content로 가져와 HTML 파일로 출력합니다.
<?php
//출력 제어 캐시 열기
ob_start();
echo "<html><head><title>test페이지</title></head><body>Hello world</body></html>";
//버퍼의 내용 가져오기
$out = ob_get_contents();
//출력 캐시 닫기
ob_end_clean();
//test.html 파일 열기 쓰기 권한 열기
$fp = fopen("test.html", "w");
if (!$fp) {
echo "Fail";die;
} else {
//파일에 쓰기
fwrite($fp, $out);
//파일 닫기
fclose($fp);
echo "Success";
}
개인적으로는 다소 난잡하게 느껴질 수 있고, 페이지가 복잡하면 php+html 코드가 난잡하게 작성되기 때문에 블로거들은 두 번째 방법을 택한다.
(2) 템플릿 페이지를 미리 작성하여 교체한다.
{title}과( 과) 같은 정적 파일을 준비하고 php 프로그램에서 file_get_content를 사용합니다.HTML 파일의 내용을 가져온 다음 대체합니다.치환 후 파일로 저장합니다.
템플릿 페이지:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{top_title}</title>
<link rel="stylesheet" href=" ">
</head>
<body>
<div class="news-details-template">
<h1>{title}</h1>
<div class="author">{author}</div>
<div class="date">{show_time}</div>
<div class="line"></div>
<div>
{content}
</div>
</div>
</body>
</html>
우리는 먼저 템플릿 페이지를 작성하여, 어떤 부분을 교체해야 하는지, 기본적인 양식 등을 포함하여, 미리 작성한다.
php 대체:
$path = \Yii::getAlias('@xxx').'/views/site/notice-detail.php';
$content = file_get_contents($path); //템플릿 가져오기
//문자열 치환을 위해 바꿀 값 가져오기
$content = str_replace('{top_title}',$title,$content);
$content = str_replace('{title}',$title,$content);
.......
$dir = $path ."/html/";
if (!file_exists($dir)) {
mkdir($dir);
}
$filename=$dir.'/'.$filename; //HTML이 존재하는지 여부를 판단하지 않습니다. 왜냐하면 쓰기는 덮어씁니다
$result = file_put_contents($filename,$content);//정적 파일에 쓰기
대개 file_get_contents를 통해 템플릿 페이지의 내용을 가져온 다음 str_replace를 통해 태그를 교체하고 교체가 완료된 후 file_pu_contents를 통해 새 파일에 쓰면 됩니다.생성된 HTML은 여러 개의 HTML을 생성할 수 있으며, 프런트엔드가 페이지별로 다른 HTML에 접속할 수 있게 하면 된다.
3. 미리 보기 생성
html생성후에는 보통 미리보기를 해서 스태프에게 보여줘야하는데, 결국 남들도 기술을 모르기 때문에 도대체 무엇이 생성되었는지 모르겠다. 하하
1.dialog를 사용하여 창을 엽니다.
정적 페이지:
//이것은 우리가 열어야 할 창이다. 먼저 숨어라
<div id="dialog-form-record" style="display:none;">
<div id="Content_record">
</div>
</div>
JS 정의 하단 버튼:
var arrButton = {
"Release": {
'text': '단추 이름',
'priority': 'secondary',
'class': 'btn btn-success',
'id':'',
'click':클릭 이벤트
},
"Cancel": {
'text': 'Cancel', //취소 단추
'priority': 'secondary',
"id":'xxx',
'click': function () {
dialogRecord.dialog( "close" );
}
}
};
//너비 정의
dialogRecord = $( "#dialog-form-record" ).dialog({
autoOpen: false,
height: 800,
width: 1400,
modal: true,
buttons:arrButton,
close: function() {
$( "#Content_record" ).html("");
dialogRecord.dialog( "close" );
}
});
JS 창 열기:
//제목과 창 크기 정의
$( "#dialog-form-record" ).dialog( "option", "title", "Preview Html" );
$( "#dialog-form-record" ).dialog({
modal: true,
height: 800,
width: 1400
});
2,iframe을 사용하여 방금 생성한 정적 파일을 가져옵니다.
(1) js iframe 도입
//시간 스탬프를 추가하여 캐시를 방지하다
for (i in response.)
iframe += "<iframe class='news_iframe' id='iframe"+ i +"' src='"+ response.url.url +"/news/html/"+ response.zh[i] + "?timestamp= " + new Date().getTime() + "'></iframe>";
}
//HTML에 iframe 쓰기
$( "#en_content" ).html(iframe);
3. 주의:
(1)iframe의 src에는 빈칸 같은 것이 있으면 안 된다.
(2)iframe 테두리 제거
(3) iframe 로딩 속도가 느리므로 onload 이벤트 추가, iframe 로딩이 끝나면 다시 표시
var iframe = document.getElementById("iframe" + count);
checkFinishedDownload(iframe);
function checkFinishedDownload(ifr) {
if (ifr.attachEvent) {
ifr.attachEvent("onload", function() {
//iframe 로드가 완료된 후 수행해야 하는 작업
});
} else {
ifr.onload = function() {
//iframe 로드가 완료된 후 수행해야 하는 작업
};
}
}
최종 효과:
'개발 꿀팁 > PHP' 카테고리의 다른 글
php 프로그램 메모리 최적화 배열 동작 최적화 (0) | 2022.07.20 |
---|---|
php 대배열 순환 중첩의 성능 최적화 (0) | 2022.07.20 |
php가 QR코드를 생성하여 앞 페이지로 돌아가기 (0) | 2022.07.20 |
PHP 환경 구축-Windows 시스템에서의 PHP 환경 구축 (0) | 2022.07.20 |
운영유선항목경험예(참고) (0) | 2022.07.20 |