随着SEO 的普及,静态化便成为网站开发的必要技术之一。网页设计 时,网站静态化通常有三种方法可以实现,一种是伪静态,一种是实实在在的静态页面,最后一种是pathinfo技术。
伪静态 下, 如果是apache服务器,是通过.htaccess文件来操作。如果是IIS服务器,则是通过httpd.ini和rewrite.dll来实现。伪静 态处理的关键技术是配置文件的规则如何得到有效的控制,并在html页面里对应起来,一旦规则改变,则html页面里的链接也需要根据规则动态的改变。后 台设置规则,并且写入.htaccess文件,同时根据规则生成php语言的规则,那么在php程序里根据规则显示页面的不同内容。这种方式的难点在于对 htaccess文件的彻透理解和应用以及php正则表达式的灵活运用上。
通过这种方式转化的静态页面的路径有两种表现形式,一种是非常规则的,比如一篇文章,article.php?artid=12,则转化成静态页面可能就 是这样:article-do-view-artid-12.html。因为每个页面必须要有动作和对象,这样便于统一管理,也可以表示成这种形 式:article/do/view/artid/12.html等等。这种形式只要在htaccess文件中写一句话便可以控制全局,那就是Rewrite Rule ^([^-]*)-(.*)$ $1.php?$2 。这样,整个规则就只有一个规则,程序里要做的只有对$2号的字符串进行处理,相对简单。第二中形式就相对人性化点,美观点,我们要把连接形式转化为article/12.html 或者 article/hello-world.html 更或者 article/hello-world_page2.html ,这种方式要对每个连接都作处理,如果只给出这种规则,计算机是不能理解的,除非给成 article/(.*)(_page[0-9])\.html 这种规则,那么在处理上就有相当大的难度,因为要把rewrite的规则解析为php的正则并进行替换,还有这些规则必须由熟悉rewrite和php的程序员来写,不利于推广。
静态页面,只要把目录地址保存在数据库里调用,但是有些动态的信息,比如登录信息,文章点击数等需要做动态的改变,这种情况主要通过js和重新生成静态页面来显示.这里给出两种生成静态页面的方法:
一、通过ob函数来控制浏览器输出。
ob_start(); include template('index'); $data = ob_get_contents(); ob_clean(); file_put_contents($filename, $data);
二、通过预先得知这个页面的地址来通过网页抓取。
function create_html($filepath, $phpfile, $page = 1){ global $siteurl; $filepath = ROOT.$filepath; $htmlpath = substr($filepath,0,strrpos($filepath,"/")); if(!is_dir($htmlpath))makeDirs($htmlpath); $contents = dfile_get_contents($siteurl.$phpfile); dfile_put_contents($filepath, $contents); }
伪静态的优点主要在于灵活,相对于静态文件就是不需要额外的脚本来生成或控制静态页面的内容,不占用服务器空间。由于是服务器内部解析的地址,所以内容是实时更新的,也不存在文件管理和硬件问题,维护比较方便。在服务器级URL Rewrite 重写技术并不影响页面的执行速度。但是URL Rewrite 的门槛比较高,国内虚拟主机大多不支持,而且虚拟主机是目录级的url Rewrite ,通过遍历目录读物URL转发规则的方式将大大降低页面的执行速度。
静态页面的好处在于少了动态解析过程,提高了页面的访问速度和稳定性,使得优化效果非常明显。对数据库和服务器的软件资源耗费少。但是占用了服务器的硬件资源,对于大型网站而言,这种方法将带来不可忽视的后继问题: 由于生成的文件数量较多,存储需要考虑文件、文件夹的数量问题和磁盘空间容量的问题,需要大量的服务器设备;程序将频繁地读写站点中较大区域内容,考虑磁 盘损伤问题及其带来的事故防范与恢复,硬件损耗要更新、站点备份要到位;页面维护的复杂性和大工作量,及带来的页面维护及时性问题,需要一整套站点更新制 度和专业的站点维护人员;
对于第三种方式,php业界流行的框架比如zend,thinkphp就应用的比较多,归根结底,他们在某些条件下也缺少不了.htaccess这个文 件,因为他们的目的都是想要把所有的连接(除过图片,js,css)都指向index.php这个文件。这里用到的主要技术之一便是pathinfo,关 于pathinfo的原理,这里就不再做过多讨论了。这种技术和用.htaccess技术的区别就在于没有使用.htaccess文件,好像说的是废话, 不过还是需要注意的。
所以综合上诉原因,个人认为:
对于一般企业网站,个人网站,这些网站信息在网页设计 时,一旦发布就很少更改,网站信息量不多的情况下,而且一般使用的是虚拟主机,可以选择生成静态页的方式。
对于大型网站,信息量巨大,具有独立服务器,可采用URL Rewrite 的方式。
对于一些中型网站,使用虚拟主机的就采用生成静态页的方式,有条件购置服务器的可视具体网站类型而定,若网站交互性较强,局部更新内容比较多的话,可以采用Rewrite ,若页面内容比较固定的话,使用静态页生成技术效果就更佳。
伪静态是相对真实静态来讲的.通常我们为了更好的缓解服务器压力 ,和增强搜索引擎的友好面.都将文章内容生成静态页面.但有时为了实时的显示一些信息.或者还想运用动态脚本解决一些问题.不能用静态的方式来展示网站内容.可这就损失了对搜索引擎的友好.怎么样在两者之间找个中间方法呢,这就产生了伪静态技术.
下面是生成伪静态地址和逆转伪静态地址的两个函数,这两个函数在相应的位置引用就可以实现将http://www.zhongya.cn/certificate_page.php?clid=22
转成这样的http://www.zhongya.cn/certificate_page.php/clid_22.htm形式。
/****************************** 使用参考: 将此http://www.zhongya.cn/company/companyshow.php?action=list&page=2 地址生成http://www.zhongya.cn/company/companyshow.php/action_list/page_2.htm形式 $url="http://www.zhongya.cn/company/companyshow.php?action=list&page=2"; $urlStr=MakeUrlHtml($url); echo $urlStr; *****************************/ function MakeUrlHtml($url){ $durl=parse_url($url); $urlStr=""; if($durl['host']) $urlStr.=$durl['scheme']."://".$durl['host']; if($durl['path']) $urlStr.=$durl['path']; if($durl["query"]){ $durl=explode("&",$durl["query"]); foreach($durl as $surl){ $gurl=explode("=",$surl); $eurl[]=$gurl[0]."_".$gurl[1]; } $tmpurl=join("/",$eurl).".htm"; $urlStr.="/".$tmpurl; } return $urlStr; } /****************************** 描 述:完成将伪静态地址还原成$_GET形式 使用参考: 将此http://www.zhongya.cn/company/companyshow.php/action_list/page_2.htm地址 还原出$_GET["action"]=list/$_GET["page"]=2 ParseUrl(); *****************************/ function ParseUrl(){ if($_SERVER['PATH_INFO']!=""){ $pathinfo=substr($_SERVER['PATH_INFO'],1); $pathinfo=str_replace(".htm","",$pathinfo); $tmp=explode("/",$pathinfo); foreach($tmp as $val){ $path=explode("_",$val); $count=count($path); for($i=0;$i<$count;$i+=2){ $_GET[$path[$i]]=$path[$i+1]; } } } }
相关推荐
网站静态化是提升大型站点性能和可扩展性的重要策略,尤其在处理高并发访问和优化SEO(搜索引擎优化)方面有着显著优势。以下是对这个大型站点网站静态化实现方案的详细解读。 1. **静态化原理**: 静态化是将动态...
将整个动态的网站静态化,其实实现的方法很简单。 //在你的开始处加入 ob_start(); ob_start(); //以下是你的代码 //在结尾加入 ob_end_clean(),并把本页输出到一个变量中 $temp = ob_get_contents(); ob_...
在网站静态化的过程中,Freemarker扮演着关键角色。通过将动态数据注入到预定义的模板中,它能够生成HTML或其他静态格式的文件,从而极大地提高了网站的访问速度,减轻了服务器的负担。 在网站静态化时,Freemarker...
**网站静态化的优势** 1. **性能提升**:静态HTML页面加载速度更快,因为它们不需经过服务器端的解释和执行过程。 2. **搜索引擎友好**:搜索引擎更容易抓取和索引静态内容,有助于提高网站的搜索排名。 3. **减轻...
### 动态网站静态化的实现方法 随着互联网技术的发展与用户需求的变化,网站设计与开发领域不断探索新的优化方案以提升用户体验与系统性能。其中,动态网站静态化是一种被广泛采用的技术手段,尤其是在Java EE环境...
在本文中,我们将深入探讨如何实现一个简单的网页静态化过程,以"网页静态化例程 网站静态化学习的第一步"为例,结合开发环境MyEclipse和MySQL数据库。 首先,我们要理解静态化的基本概念。静态化是指将动态生成的...
网站静态化处理是大型网站技术中的重要一环,旨在提高网站性能、降低服务器负载和提升用户体验。在描述中提到了几个关键概念,包括CSI(可能是Content Serving Infrastructure,内容分发基础设施)、web前端优化、...
`Rewrite`文件、IIS(Internet Information Services)静态文件配置以及PHP网站静态化文件是实现这一目标的关键技术环节。下面将详细解释这些概念及其在实际应用中的作用。 1. **Rewrite文件**: `Rewrite`文件...
本实例源码是关于如何利用Freemarker进行网站静态化的具体实践,主要涉及到以下几个核心知识点: 1. **Freemarker模板语言**:Freemarker使用简单的文本模板语言,将数据模型与HTML模板结合,生成最终的HTML页面。...
【上品折扣网站静态化方案】是针对电商网站性能优化的一种技术手段,旨在提高网页加载速度,提升用户体验,减轻服务器压力。以下是对该方案的详细解释: 1. **基本架构**: - 静态化流程包括从数据库和配置文件...
【天猫浏览型网站静态化架构设计】是针对大型电商平台如天猫在双11等活动期间应对极高流量冲击的技术解决方案。此架构旨在确保系统在峰值请求下的可伸缩性、用户响应时间和高可用性,同时考虑安全性和成本效益。自...
### 浏览型网站静态化架构设计 #### 架构背景与挑战 随着电商活动规模的不断扩张,尤其是像天猫“双11”这样的大型促销活动,浏览型网站需要面对比平时高出数倍甚至数十倍的流量冲击。这种短时间内急剧增加的访问...
标题“首页静态化步骤”指的是将网站的动态首页转换为静态HTML页面的过程,这有助于提高网站的加载速度、减轻服务器负担以及优化搜索引擎排名。在Web开发中,首页静态化是常见的性能优化手段。 首先,我们需要了解...
【标题】"httpclient 静态化网站 project...通过这个项目,开发者可以学习到如何利用HttpClient进行网络通信,以及如何设计和实现一个完整的网站静态化解决方案。这对于提升Web开发技能和理解网络爬虫原理非常有价值。
动态页面静态化是一种提高网站性能和搜索引擎友好度的技术手段,主要通过将原本由服务器动态生成的HTML页面转换为预先生成的静态HTML文件。这样,用户请求时,服务器无需执行数据库查询和其他复杂操作,而是直接返回...
可以将动态的网页转成静态页面,有利于搜索引擎收录
在IT领域,网站静态化是一种常见的优化手段,它可以提升网站的加载速度,降低服务器负担,同时对搜索引擎友好。本篇文章将深入探讨一款基于易语言编写的网站静态生成器源码,旨在帮助读者理解其工作原理和应用方法。...
.NET静态首页,.NET生成静态首页,动态网站静态化, 原理是 获取网站首页HTML内容 保存至HTML页。
在本项目"springboot页面静态化-Thymeleaf"中,我们将探讨如何利用Thymeleaf技术实现Spring Boot应用的页面静态化,并通过一个简单的示例来演示其基本用法。 1. **Thymeleaf简介** Thymeleaf是一个开放源代码的...