`

页面静态化

    博客分类:
  • WEB
阅读更多

urlrewritefilter 下载: http://tuckey.org/urlrewrite/#download

 所用基于动态的url http://www.nihaoblog.com/content.jsp?id=1&contentid=404按照各大搜索引擎的喜好,应该美化成http://www.nihaoblog.com/content/1_404.html静态网页的方式,尽管目前的google及几大搜索引擎宣称支持动态页网的抓取,但与传统的html文件相比较抓取率仍不在一个数量级。Apche的mod_rewrite模块具有此功能,但是对于租用虚拟主机的用户来说就比较麻烦不太可能对所有运营商有更多的要求,需要条件依赖就不具通用性。

    目前有一个解决方法,通过UrlRewriteFilter可以完全实现动态URL表态化,你可以将它直接应用到你的web应用中,不管你用的是jsp+javabean还是struts. 
    
下面是使用方法:
    1、下载http://tuckey.org/urlrewrite/#download目前版本是1.2,解压缩后将文件考到相应的web-inf/lib和web-inf下,。
    2、配置web.xml
xml 代码
  1. <filter>    
  2.        <filter-name>UrlRewriteFilter</filter-name>    
  3.        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>    
  4. </filter>    
  5. <filter-mapping>    
  6.        <filter-name>UrlRewriteFilter</filter-name>    
  7.        <url-pattern>/*</url-pattern>    
  8. </filter-mapping>  
 
根据自己的需要,将相应目录下的url转给UrlRewriteFilter来处理。
   3、配置urlwrite规则文件WEB-INF/urlrewrite.xml 
配置如下: 
  1. <rule>    
  2.     <from>/content/([0-9]+)_([0-9]+).html</from>    
  3.     <to>/content.jsp?id=$1&amp;contentid=$2</to>    
  4. </rule>  
xml 代码
    
注意:有多个参数时,中的连接符号&应该是& 
熟悉正则表达式的朋友可能一看就是明白rule的匹配原理了。更多的配置可以参照http://tuckey.org/urlrewrite/manual/

每个网页或请求都是一个url地址,一般,这个地址可能是.do,.page,.action之类的并加上'?'号、'&'号查询串等构成的一个长长的的url。很urgly。

一般的url----------------------------------------------------------较好的url
http://www.xxx.net/user/profile.do?id=20001 ====> http://www.xxx.net/user/20001
http://www.xxx.net/forum/board.do?name=java ====> http://www.xxx.net/forum/java
http://www.xxx.net/forum/thread.do?id=29923 ====> http://www.xxx.net/thread/29923

后者明显较为直观和漂亮。

使用url rewrite可以很好的改善这个状况。网站url rewrite应用是非常广泛的,良好的url设计给用户带来的非常好的体验,同时也能吸引搜索引擎的注意。

一种rewrite称为一个规则,上面的例子就是3个规则。rewrite技术可以在代理服务器实现,或者可以在tomcat之类的java web服务器实现。 Apache HTTP Server 2.x 和 mod_proxy提供了不错的Rewrite处理方法。so如果使用apache,则直接在apache中配置Rewrite即可。但是对于没有使用代理,或者不完全要在代理服务器配置Rewrite的web应用,通过第三方Jar包也是可以实现很perfect的rewrite技术的。这是本帖的着重点。

这个第三方包的地址是:http://tuckey.org/urlrewrite/ (待会再去这个网站,现在先别去)

这个包使用正则表达式仿照了apache rewrite的做法。而实现原理也是很明晰的:filter,forward,redirect机制组合:

在web.xml配置一个UrlRewriteFilter,拦截所有进来的请求,对服务要求的请求进行rewrite。比如,对http://www.xxx.net/user/([0-9]+)请求,forward到/profile.do?id=$1。这就是一条规则。在这个第三方包中的规则文件urlrewrite.xml中可以这样定义:

代码
  1. <rule>  
  2.     <from>^/user/([0-9]+)/?$from>  
  3.     <to type="forward">/profile.do?id=$1to>  
  4. rule>  

 

对我来说,一般我会配置一个通用的rule,使所有没有包含"."的url forward到.do的action上来(本人使用strut做系统较多)

 

代码
  1. <rule>  
  2.     <note>  
  3.         - 这是一个通用请求url rewrite   
  4.         - 将请求forword url加上“.do”的处理器上。   
  5.         - 例:   
  6.         -   请求 http://{domain}/user/login    将被forward到 http://{domain}/user/login.do   
  7.         -   请求 http://{domain}/user/login/   将被forward到 http://{domain}/user/login.do   
  8.         -   请求 http://{domain}/user/logout/  将被forward到 http://{domain}/user/logout.do   
  9.     note>  
  10.     <from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?$from>  
  11.     <to type="forward">/$1.doto>  
  12. rule>  

 

上面只是介绍个大概,并不是urlrewriter这个jar包的使用指南。如果你觉得这种rewrite做法不错的话,不如直接访问这个网站吧 http://tuckey.org/urlrewrite/

第一步:从http://tuckey.org/urlrewrite/ 上下载urlrewrite-3.0.3.jar包,放到webapp classpath下

第二步:在web.xml配置UrlRewriteFilter:

 

代码
  1. <filter>  
  2.     <filter-name>UrlRewriteFilterfilter-name>  
  3.     <filter-class>  
  4.         org.tuckey.web.filters.urlrewrite.UrlRewriteFilter   
  5.     filter-class>  
  6.     <init-param>  
  7.         <param-name>logLevelparam-name>  
  8.         <param-value>WARNparam-value>  
  9.     init-param>  
  10. filter>  
  11. <filter-mapping>  
  12.     <filter-name>UrlRewriteFilterfilter-name>  
  13.     <url-pattern>/*url-pattern>  
  14. filter-mapping>  

 

 

第三步:在web-inf下新建urlrewrite.xml文件,简单填入以下内容:

 

代码
  1. <!---->xml version="1.0" encoding="utf-8"?>  
  2.     "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">  
  3.   
  4. <urlrewrite>  
  5.     <rule>  
  6.         <note>  
  7.             - 这是一个通用请求url rewrite   
  8.             - 将请求forword url加上“.do”的处理器上。   
  9.             - 例:   
  10.             -   请求 http://{domain}/user/login    将被forward到 http://{domain}/user/login.do   
  11.             -   请求 http://{domain}/user/login/   将被forward到 http://{domain}/user/login.do   
  12.             -   请求 http://{domain}/user/logout/  将被forward到 http://{domain}/user/logout.do   
  13.         note>  
  14.         <from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?$from>  
  15.         <to type="forward">/$1.doto>  
  16.     rule>  
  17.   
  18. urlrewrite>  

 

 

第四步:启动web应用,将原来需要.do的请求改为去掉.do后请求,看看结果。

第五步:更详细的规则定义,请看http://tuckey.org/urlrewrite/manual/3.0/

转自:http://www.nihaoblog.com/1_733.html  http://www.iteye.com/article/53834

分享到:
评论
2 楼 harbey 2010-12-17  
me too.一直在找解决方案!之前有做过整站的静态化,但是不够灵活!
1 楼 mikkjl 2010-03-22  
对于项目静态化,我至今还没想到好的方法,唯一就是做了个首页静态化,对于如何做整个项目静态化,自己一直未想通,如有好的建议,可以发邮件给我:jinli-yuan@163.com

相关推荐

    .net页面静态化

    下面我们将深入探讨.NET页面静态化的核心概念、实现方法以及其优势。 一、页面静态化原理 页面静态化的基本思想是,在用户请求动态内容时,服务器不再实时生成动态页面,而是直接返回已经生成的静态HTML文件。这...

    有关Java页面静态化

    Java页面静态化主要有两种方式:服务器端静态化和客户端静态化。 1. 服务器端静态化: - **预渲染(Prerendering)**:在用户请求之前,系统自动将一些常用或者热点页面生成静态HTML文件,存储在文件系统或CDN上。...

    java JSP页面静态化总结_动态页面变为静态页面以减少访问数据库的次数提高速度.zip

    1. **JSP页面静态化原理**: - JSP页面静态化的核心思想是将原本需要服务器实时解析的动态内容,提前转换为静态HTML文件,存储在服务器上。这样,当用户请求这些页面时,服务器不再需要执行JSP脚本,而是直接返回...

    java 页面静态化

    在进行页面静态化时,我们还需要考虑一些问题,比如如何处理动态内容(如用户登录状态、个性化推荐)、如何同步静态文件和动态数据、以及如何清理过期的静态文件等。这些问题可以通过设计合理的缓存策略和定时任务来...

    c# 页面静态化软件

    因此,页面静态化是提升网站性能的有效手段。 页面静态化技术的核心原理是通过解析动态网页的URL,生成对应的HTML文件,并存储在服务器的文件系统或缓存中。当用户请求该URL时,服务器直接返回预先生成的HTML,而...

    php页面静态化

    PHP页面静态化是一种常见的优化网站性能的技术,它将动态生成的网页内容转化为静态HTML文件,以便浏览器可以直接加载,而无需每次请求时都执行PHP脚本和查询数据库。这样可以显著提高页面加载速度,减轻服务器负担,...

    asp.net 动态页面静态化

    在ASP.NET中,动态页面静态化主要有两种方式:预编译(Precompilation)和运行时静态化(Runtime Output Caching)。 1. 预编译: 预编译是ASP.NET提供的一种在部署前将所有ASPX页面转换为编译好的DLL文件的过程。...

    ASP.NET 动态页面静态化

    ### ASP.NET 动态页面静态化详解 #### 一、概念理解 动态页面静态化(Dynamic Page Staticization)是指将动态生成的网页内容转换为静态HTML文件的过程。这一技术广泛应用于提高网站性能、优化SEO(搜索引擎优化)...

    ASP.NET页面静态化例子带数据库.rar

    这个压缩包文件"ASP.NET页面静态化例子带数据库.rar"包含了实现这一技术的具体示例,很可能是通过代码、数据库脚本和配置文件来展示的。 首先,我们要理解ASP.NET页面静态化的概念。在ASP.NET中,通常网页是动态...

    php实现页面静态化

    其中一种常见的方法就是实现页面静态化。本文将详细介绍如何使用 PHP 来实现页面静态化,包括纯静态化和伪静态化两种方式,并通过具体的案例进行演示。 #### 二、基础知识 **页面静态化**是指将动态生成的网页转换...

    jsp的页面静态化技术,很实用

    **JSP页面静态化技术详解** 在Web开发中,JavaServer Pages(JSP)是一种常见的动态网页技术,它允许开发者将HTML代码与Java代码混合编写,以实现动态内容的生成。然而,在高流量的网站中,为了提高性能和降低...

    自定义分页类+页面静态化+php

    实现页面静态化的方法有多种,包括后台定时生成、用户访问时实时生成或缓存等。 在PHP中,我们可以利用文件系统操作函数来读写静态HTML文件。例如,当用户访问一个动态页面时,程序首先检查是否存在对应的静态文件...

    SpringBoot2 整合FreeMarker模板,完成页面静态化处理.docx

    【SpringBoot2 整合FreeMarker模板,完成页面静态化处理】 在Web开发中,页面静态化是一种提高网站性能和用户体验的技术。它涉及到将原本动态生成的页面转换为静态HTML文件,减少对服务器的依赖,加快页面加载速度...

    php 页面静态化

    php 页面静态化

    cms页面静态化源码

    标题“cms页面静态化源码”表明我们将探讨如何通过源代码实现CMS系统中的页面静态化功能。 在动态网站中,每当用户请求一个页面时,服务器都会执行相应的PHP、Java、Python或其它脚本语言,生成HTML内容,然后将其...

    动态页面静态化技术,c#技术

    动态页面静态化技术,c#技术 动态页面静态化技术,c#技术

    网站架构(页面静态化_图片服务器分离_负载均衡)方案全解析

    本文将深入解析网站架构中的三项关键技术:页面静态化、图片服务器分离以及负载均衡,并探讨它们如何协同工作以提升网站性能。 #### 1. 页面静态化 页面静态化是一种提高网站访问速度的有效手段。通过将动态生成的...

    ASP.NET页面静态化,伪静态化

    ASP.NET页面静态化和伪静态化是Web开发中提高网站性能和SEO优化的重要技术。页面静态化是指将原本动态生成的HTML页面转化为静态HTML文件,这样用户请求时无需执行服务器端的代码,直接从硬盘读取文件,提高了访问...

    Jsp页面静态化(freemarker)教程及源码

    前台页面的静态化就有利于SEO,所以这个问题摆在了我的面前,在网上一搜,关于这方面的资料不是很多,又很杂,关于这方面的知识,越来或多的程序员将会碰到,原来项目中这部分静态化的功能主要由我来做的,现在我将...

Global site tag (gtag.js) - Google Analytics