网页静态化技术

news/2024/7/6 13:38:26 标签: php, 数据库, java

静态页面:纯html页面

动态页面:内容存在数据库中,根据要求显示,url中以? &显示不同的参数

伪静态:仅仅是对静态页面的重写,不能让动态页面静态化。搜索引擎不会认为伪静态就是HTML文档。其次,伪静态可取,但应把重心放在去除冗余参数、规范URL、尽可能的避免

重复页上。 举例说明: 这是一个动态网址 news.php?lang=cn&class=1&id=2,从seo的角度来看, 最好重写为 news-cn-class1-id2.html。这样的也更加有效的防止sql注入攻击 。

但是也不要精简重写为 news-2.html,这样简写同样不利于搜索引擎优化.

 

静态化的必要性:

1.访问html比php jsp速度更快

2.更有利于SEO

3.不易被sql攻击

 

网站的优化,要注意的以下几点:

 

页面真静态思路:

信息对实时性要去不高,并且比较稳定,当第一个用户访问某条新闻后,使用缓存机制(缓存的内容是http的contents中的内容),

把内容缓存到html中,下次访问时直接访问html即可。

问题:

如果我们的新闻更新了,这样我们的静态页面不变->解决

解决方法1:我们可以判断静态页面是否过期(30s),如果过期,则重新创建

方法局限:①页面点击查看的时候,仍然是个php页面->网址

     ②实时性不好,30s延时

解决思想:当我们添加新闻或者更新新闻的时候,就同步的更新html静态页面。

设计模板文件(网页设计师/美工),通过模板创建静态页面。

 

页面静态化(真静态)的优点和缺点 

html静态页(真静态)的好处

一是减少服务器对数据响应的负荷,

二是加载不用调动数据库,响应速度快。

三是便于优化引擎。

缺点:一是空间占用比较大。二是生成的文件多了,服务器对html文件的响应负担也较重,海量的静态文件查找起来也较慢。

如果一个系统使用真静态进行页面静态化,需要生成海量的静态 页面,我们可以考虑使用伪静态来处理.

 

伪静态:

比如这个网页 http://localhost/content.php/1,122,8912.html其实处理的脚本是content.php 参数为1,122,8912

相当于content.php?a=1&b=122&c=8912 只不过这样的URL太难记。搜索引擎也不喜欢。、

真静态只是完全生成了HTML。 客户端访问的时候直接输出。不用脚本解释。在流量非常大的时候(比如每天有上百万的访问量的时候)会起到很好的效果。

也就是说服务器端实实在在的存在这个HTML页面。 当然在你网站的流量没有那么大的时候。URL重写是最好的方法(如果访问量很大,还可以考虑负载均衡)

URL重写的方法有很多种,APACHE(rewrite),IISREWRITE。PHP脚本直接处理。我们先讲解如何使用PHP脚本直接处理。

1.php程序的正则表达式来实现:

程序为例:

http://localhost/content.php/1,122,8912.html

<?php //利用server变量 取得PATH_INFO信息 该例中为 /1,122,8912.html 也就是执行脚本名后面的部分

if(@$path_info =$_SERVER["PATH_INFO"]){

//正则匹配一下参数

if(preg_match("/\/(\d+),(\d+),(\d+)\.html/si",$path_info,$arr_path)){

$gid =intval($arr_path[1]); //取得值 1

$sid =intval($arr_path[2]);//取得值122

$softid =intval($arr_path[3]); //取得值8912

}else die("Path:Error!"); }else die('Path:Nothing!'); ?>

 

2.

下面讲一下另外一种形式的PHP伪静态的程序实现方法程序为例: http://www.hsp.com/news-id23.html 通过apache的 rewrite机制来实现.

 

 

真静态 VS 伪静态

①真静态访问效率高,利于seo.可以减少对数据库的操作。但是会占用大量 的磁盘.

②伪静态一、可以方便的实现对搜索引擎的优化,

    二、占空间比较小。

    三、通过生成不同view-id2.hmtl 可以实现内容的变化.

    四有效的防止了注入攻击

小结: 如果一个网页会被频繁的访问(比如百万级别),通过该网页每次都会去操作数据库,可以考虑使用真静态(建议有针对性的使用),

    如果一个网页为了实现对搜索引擎的优化,提供网站的安全性,使用伪静态.

 

真静态和伪静态的选择

什么情况下不适合使用静态化技术. 网站实时性要求高,不要使用静态化(真静态,伪静态均不适宜). 如果网站访问量较小,没有必要使用静态化技术

如果数据项目不多,但是访问频率极大,建议使用真静态,比如新浪新闻频道

如果数据项目海量,使用真静态会生成海量的html静态页面,建议 使用伪静态

在一个大型网站中,静态化技术是综合使用的,这个需要大家经验 的积累,多做项目

注: 个人推荐使用伪静态配合缓存技术(防止缓存文件量过大做一些定时清理过时文件操作)来为提供大型网站提速.

 

java web简单实现真静态案例:「Java Web」主页静态化的实现

java web简单实现伪静态案例:【Java Web】使用URLRewrite实现网站伪静态

 

转载于:https://www.cnblogs.com/xiangkejin/p/7112233.html


http://www.niftyadmin.cn/n/1090212.html

相关文章

P2571 [SCOI2010]传送带

链接&#xff1a;https://www.luogu.org/problemnew/show/P2571 题目描述 在一个2维平面上有两条传送带&#xff0c;每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P&#xff0c;在CD上的移动速度为Q&#xff0c;在平面上的移动速…

【Python】列表解析表达式

1、语法 [expression for iter_val in iterable] [expression for iter_val in iterable if cond_expr] 2、示例 1 s "abcdefg" 2 #将字符串s拆分成列表 3 list_s [i for i in s] 4 print(list_s) 1 s "abcdefg" 2 s_2 "cdefgkgz" 3 #求s_2和…

Javascript装饰器的妙用

最近新开了一个Node项目&#xff0c;采用TypeScript来开发&#xff0c;在数据库及路由管理方面用了不少的装饰器&#xff0c;发觉这的确是一个好东西。装饰器是一个还处于草案中的特性&#xff0c;目前木有直接支持该语法的环境&#xff0c;但是可以通过 babel 之类的进行转换为…

Linux基础命令---修改用户信息usermod

usermod 修改用户的信息&#xff0c;包括用户名、密码、家目录、uid等。 此命令的适用范围&#xff1a;RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、语法 usermod [选项] [参数] 2、选项列表 选项 说明 --help 显示帮助文档 --version 显示命令版本 -c…

node-sass 解决 no such file or directory

在使用node-sass编译的时候出现以下情况 Error: ENOENT: no such file or directory, scandir D:\xxxx\node_modules\.npminstall\node-sass\3.7.0\node-sass\vendor 解决的方法是 npm rebuild node-sass npm rebuild&#xff1a; 用于更改包内容后进行重建 转载于:https://w…

Linux基础命令---添加用户useradd

useradd 创建新的系统用户&#xff0c;useradd指令只能以管理员的身份运行&#xff0c;创建的用户都在“/etc/passwd”文件中。当不加-D参数,useradd指令使用命令列来指定新帐号的设定值and使用系统上的预设值.新使用者帐号将产生一些系统档案&#xff0c;使用者目录建立&#…

Android之实现ViewPager+Fragment左右滑动

近期看新闻发现新闻的页面是能够左右滑动的。于是自己就好奇起来了&#xff0c;之前做过ViewPager展示图片&#xff0c;在想怎么载入页面呢&#xff1f;研究了一下。发现就是加入了Fragment&#xff0c;废话不多说&#xff0c;揭秘奥秘的时候到了。 使用过ViewPager小伙伴们都…

HIVE中join、semi join、outer join

补充说明 left outer join where is not null与left semi join的联系与区别&#xff1a;两者均可实现exists in操作&#xff0c;不同的是&#xff0c;前者允许右表的字段在select或where子句中引用&#xff0c;而后者不允许。 除了left outer join&#xff0c;Hive QL中还有rig…