分为真静态,和伪静态。另外,常常会将js、css、图片等单独放到几台资源服务器,由nginx分发请求到动态服务器和资源服务器。以及使用CDN分发网络。另外,同一个页面,也可以分为静止不变的,前端可以缓存,比如页面头部、底部等。
真静态:生成html,另外可以将页面内容放入nosql中。
伪静态:UrlRewrite
其中UrlRewrite,其实是一种地址欺骗,有多种实现,主要是页面通过访问http://xxxx/page/1.html时,后端根据url转发到pageContoller的一个默认方法处理,参数id为1.
下载相应jar包,然后在配置中配filter,把静态请求根据正则表达式将请求重置为动态请求:
1、提高安全性,屏蔽内部的url结构
2、美化URL
3、更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息。
静态化的好处,网上摘录:
一、加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高;
二、有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;
三、减轻服务器负担,浏览网页无需调用系统数据库;
四、网站更安全,HTML页面不会受php相关漏洞的影响; 观看一下大一点的网站基本全是静态页面,而且可以减少攻击,防sql注入。
需要解决的问题:
一、信息更新时,如何保证信息同步。
二、静态文件资源不断增加,容量逐渐增大。
三、数据与模板对应。数据库的数据要与具体模板一致对应上,算法不能出错。
个人理解:
jsp的原理还记得不,当客户端浏览器向服务器请求一个 JSP 页面时,服务器收到该请求后,首先检查所请求的这个JSP 文件内容 ( 代码 ) 是否已经被更新,或者是否是 JSP 文件创建后的第一次被访问:
如果是,那么,这个 JSP 文件就会在服务器端的 JSP 引擎作用下转化为一个 Servlet 类的 Java 源代码文件。紧接着,这个 Servlet 类会在 Java 编译器的作用下被编译成一个字节码文件,并装载到 jvm 解释执行。剩下的就等同于 Servlet 的处理过程了。发多
所以呢,如果想做伪静态,只需要配置一个URLRewriterFilter过滤器,拦截.html请求,匹配url是否符合静态页面,是则根据前缀作为参数转发到其他处理器。