PHP页面静态化:真静态的两种方案,php静态
----------------------------------------------------------------------------------------------
<span>方案1:如果静态文件存在,且生成时间30秒内,直接返回静态页面(有时间延迟)<br />/*<br />|------------------<br />| <www.chenwei.ws><br />|------------------<br />*/<br /></span><span>header</span>('content-type:text/html;charset=utf-8'<span>);</span> <span>$id</span> = <span>$_GET</span>['id'] ? <span>intval</span>(<span>$_GET</span>['id']) : ''<span>; </span><span>if</span>(<span>$id</span> === '') <span>die</span>('请输入要查询的新闻id!'<span>); </span><span>$html_file</span> = "news-id-".<span>$id</span>.".html"<span>; </span><span>//1.</span><span>主要代码</span> <span>if</span>(<span>file_exists</span>(<span>$html_file</span>) && <span>filemtime</span>(<span>$html_file</span>) + 30 >= <span>time</span><span>()) { </span><span>echo</span> '静态页面:'<span>; </span><span>echo</span> <span>file_get_contents</span>(<span>$html_file</span>);<span>exit</span><span>; } </span><span>//</span><span>这里也可以使用DB工具类</span> <span>$con</span> = <span>mysql_connect</span>('localhost', 'root', '123456'<span>); </span><span>if</span>(!<span>$con</span><span>) { </span><span>die</span>('连接失败!'<span>); } </span><span>mysql_select_db</span>('testdb', <span>$con</span><span>); </span><span>$sql</span> = "select * from bo_question where question_id = <span>$id</span>"<span>; </span><span>$res</span> = <span>mysql_query</span>(<span>$sql</span>, <span>$con</span><span>); </span><span>if</span>(<span>$row</span> = <span>mysql_fetch_assoc</span>(<span>$res</span><span>)) { </span><span>ob_start</span>();<span>//2.</span><span>启动ob缓存</span> <span>header</span>('content-type:text/html;charset=utf-8'<span>); </span><span>echo</span> '<head><meta http-equiv="content-type" content="text/html;charset=utf-8" /></head>'<span>; </span><span>echo</span> '<table>; </span><span>echo</span> '<tr><td>问题详细内容</td></tr>'<span>; </span><span>echo</span> "<tr><td>标题:{<span>$row</span>['question_title']}</td></tr>"<span>; </span><span>echo</span> "<tr><td>详细:{<span>$row</span>['question_detail']}</td></tr>"<span>; </span><span>echo</span> '</table>'<span>; </span><span>$ob_str</span> = <span>ob_get_contents</span><span>(); </span><span>//3.</span><span>把ob_str保存到一个静态文件页面,取文件名有讲究:1.唯一标识该新闻 2.利于seo</span> <span>file_put_contents</span>("news-id-".<span>$id</span>.".html", <span>$ob_str</span><span>);<br /> <br /> //关闭数据库连接(非必须; 非长连接下,脚本执行完会自动关闭) <br /> mysql_close($con); }</span><span>else</span><span>{ </span><span>echo</span> '没有查询到资源!'<span>; }</span>
@黑眼诗人
方案2:使用模板替换技术(没有时间延迟)<br />/*<br />|------------------<br />| <www.chenwei.ws><br />|------------------<br />*/
<span>$oper</span> = <span>$_POST</span>['oper'<span>];//添加操作 </span><span>if</span>(<span>$oper</span> === 'add'<span>) { </span><span>$title</span> = <span>$_POST</span>['title'<span>]; </span><span>$content</span> = <span>$_POST</span>['content'<span>]; </span><span>//</span><span>如果严格按MVC,这里应该调用model了</span> <span>$con</span> = <span>mysql_connect</span>('localhost', 'root', '123456'<span>); </span><span>if</span>(!<span>$con</span><span>) { </span><span>die</span>('连接失败!'<span>); } </span><span>mysql_select_db</span>('news', <span>$con</span><span>); </span><span>$sql</span> = "insert into question(null, '<span>$title</span>', '<span>$content</span>', '')"<span>; </span><span>if</span>(<span>mysql_query</span>(<span>$sql</span>, <span>$con</span><span>)) { </span><span>//1.</span><span>生成静态文件 </span> <span>$id</span> = <span>mysql_insert_id</span><span>(); </span><span>$html_filename</span> = 'news-id'.<span>$id</span>.'.html'<span>; </span><span>$html_fp</span> = <span>fopen</span>(<span>$html_filename</span>, 'w'<span>); </span><span>//2.</span><span>把模板文件读取(news.html)</span> <span>$fp</span> = <span>fopen</span>('news.tpl', 'r'<span>); </span><span>//</span><span>r 只读方式打开; r+ 读写方式打开; w 写入方式打开:文件内容将被清空!如果文件不存在将创建; a 以追加的方式打开 //3.循环读取 //如果没有读到文件的最后,就一直读取</span> <span>while</span>(!<span>feof</span>(<span>$fp</span><span>)) { </span><span>//</span><span>一行行读</span> <span>$row</span> = <span>fgets</span>(<span>$fp</span><span>); </span><span>//</span><span>把占位符替换掉 => 可以自定义完整的替换规则函数</span> <span>$row</span> = <span>str_replace</span>('%title%', <span>$title</span>, <span>$row</span>);<span>//</span><span>如果不重新赋值$row, $row值不会改变</span> <span>$row</span> = <span>str_replace</span>('%content%', <span>$content</span>, <span>$row</span><span>); </span><span>fwrite</span>(<span>$html_fp</span>, <span>$row</span><span>);//4.将内容写入静态文件 }<br /> </span><span>//5.</span><span>文件必须关闭</span> <span>fclose</span>(<span>$html_fp</span><span>); </span><span>fclose</span>(<span>$fp</span><span>); </span><span>echo</span> "添加成功。<a href='newslist.php'>点击查看新闻!</a>"<span>; } </span><span>else</span><span> { </span><span>die</span>('添加失败!'<span>); } } </span><span>//</span><span>此时在新闻列表内,点击查看详情的链接,可以改成生成的静态页面地址,直接进入静态文件。 //news.tpl模板文件</span><span> /*</span><span> <html> <head> <meta charset="utf-8" /> <title>%title%</title> </head> <body> <h1 id="title">%title%</h1> <pre class="brush:php;toolbar:false">%content%

伪静态是指将动态的url地址通过伪装成静态地址的方式进行访问的技术,而隐藏php后缀则是通过修改服务器配置,让访问动态页面时不再显示php后缀。这样做的好处是可以增强网站的安全性,避免被破解,同时也更加美观,增加用户体验。本文将详细介绍如何使用伪静态隐藏php后缀,以提升网站的安全性和用户体验。

众所周知,优化网站的SEO是网站运营中非常重要的一环。而众多网站使用的动态网页系统(如PHP)默认的URL带有拓展名(.php、.html等)会影响网站的SEO效果。为了提升网站的优化效果,一种常见的做法是将动态URL改为伪静态URL以隐藏拓展名,提高网站的用户体验和搜索引擎排名。本文将以“伪静态隐藏php后缀”为主题,介绍如何在PHP网站中实现这种优化,并

提升网站安全性:伪静态规则实现PHP后缀隐藏随着互联网的发展,网站安全性问题日益凸显,其中包括对恶意攻击的防范和用户数据的保护。一种有效的措施是通过伪静态规则来隐藏PHP后缀,这有助于提高网站的安全性和保护用户隐私。在实现这一目标时,我们需要使用一些具体的代码示例来演示如何实现PHP后缀的隐藏。首先,我们需要了解什么是伪静态规则。伪静态是一种将动态网页链接转

随着互联网的快速发展,网站的建设越来越受到人们的关注。而众所周知,优化网站的SEO能够提高网站的排名及流量,并且伪静态就是网站SEO优化中不可或缺的一部分。在这篇文章中,我们将会利用ThinkPHP6实现伪静态,并且进一步探讨伪静态的优化和实现过程。什么是伪静态?在讲解伪静态实现之前,先来了解一下什么是伪静态。伪静态是一种通过对网页URL地址进行重写,使其看

标题:从原理到实践:详解伪静态隐藏php后缀在网络开发中,为了提高网站的安全性以及提升用户体验,隐藏URL中的文件扩展名已成为一种常见的操作。其中,隐藏PHP文件后缀是一种常用的技术手段,可以提高网站的安全性,增加网站的美观性,也有利于搜索引擎优化。本文将详细解释伪静态隐藏PHP后缀的原理和实践操作,并提供具体的代码示例。一、伪静态隐藏PHP后缀的原理伪静态

PHP关闭伪静态代代码的方法详解随着网站开发的不断发展,伪静态代代码成为了优化网站链接、提升用户体验的重要一环。而有时候,我们也需要关闭伪静态代代码,可能是为了调试或者其他需求。在本文中,我们将逐步详细讨论如何关闭PHP中的伪静态代代码,并提供具体的代码示例。了解伪静态代代码首先,让我们简单了解一下什么是伪静态代代码。伪静态代代码是指通过URL重写技术,将动

标题:PHP关闭伪静态代代码的技巧分享伪静态代代码是指一种让动态生成的URL看起来像静态页面链接的技术。在使用PHP开发网站时,有时候我们会遇到需要关闭伪静态代代码的情况,比如在调试阶段或者为了解决一些URL重定向问题。本文将分享一些关闭伪静态代代码的技巧,并提供具体的代码示例。一、关闭伪静态代代码的方法通过.htaccess文件关闭在网站根目录下找到.ht

在当前网络技术日新月异的时代,网站的安全性和稳定性越来越受到人们的关注,其中隐藏网站的真实技术框架成为了许多站长们关心的焦点之一。伪静态技术,是一种常用的手段,可以有效提高网站的安全性,并且有助于防止站点被爬虫等恶意程序攻击。本文将深入探讨伪静态技术中如何正确隐藏php后缀,并提供具体代码示例。一、伪静态的概念伪静态,即伪静态化,是指在url地址中隐藏网站的


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

뜨거운 주제



