昨天在处理ASP教程时,突然发现一个大问题,什么问题呢?发现每一个htm文件都在50K以上,相当汗哦!一般htm文件在30K以上就相当大了,经检查后发现,文件中存在大量的空格和换行,这还是其次呢,另外还有一个在A标记中tppabs="XXXXXXX"(经查证实为Teleport Ultra留下的)的属性,占用了大量空间。于是想到了网页减肥工具,百度了一把,确实有许多这样的工具,但是都是需要注册的,不注册不能批量处理,752个文件,一个一个处理,汗-直接晕倒!最后决定自己抄家伙写个出来,接下来就开始写了一个ASP版的,主要优化html,htm.shtml等扩展名的文件,处理掉空格和换行以及处理tppabs="XXXXX"的东东,完整源代码如下:
<form id="form1" name="form1" method="post" action="">
<label></label>
<p>
<label></label>
</p>
<br/>
<table width="520" border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#66CC99">
<tr bgcolor="#FFFFFF">
<td height="40 " colspan="2" align="center" bgcolor="#57DB9C"><strong> ASP版网页源码减肥工具</strong></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="center">网站目录:</td>
<td><label>
<input name="WebMuLu" type="text" id="WebMuLu" size="40" value="<% if Request("WebMuLu")<>"" Then Response.Write(Request("WebMuLu")) else Response.Write(Server.MapPath("./")) End If%>" />
</label></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="127" align="center">文件后缀:</td>
<td width="373"><input name="HouZhui" type="text" id="HouZhui" value="<%If Request("HouZhui")<>"" Then Response.Write(Request("HouZhui")) Else Response.Write("shtml,html,htm") End If%>" size="40" /></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="center">优化:</td>
<td><label>
<input name="isReplace" type="checkbox" id="isReplace" <%If Request("isReplace") <>"" Then Response.Write("Checked")%> value="yes" />开/关<!--不选中不进行优化操作,只搜索可优化的文件-->
</label></td>
</tr>
<!--tr bgcolor="#FFFFFF">
<td align="center">查找内容:</td>
<td><textarea name="MuMaContent" cols="38" rows="4" id="MuMaContent"><-%if Request("MuMaContent")<>"" Then Response.Write(Request("MuMaContent"))%></textarea></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="center">替换内容:</td>
<td><textarea name="ReplaceStr" cols="38" rows="4" id="ReplaceStr"><-%if Request("ReplaceStr")<>"" Then Response.Write(Request("ReplaceStr"))%></textarea></td>
</tr-->
<tr bgcolor="#FFFFFF">
<td height="40" colspan="2" align="center"><input type="submit" name="Submit" value="搜索" />
<label>
<input type="reset" name="Submit2" value="重置" />
</label></td>
</tr>
</table>
<br />
</form>
<%
if request("submit")<>"" Then
dim arr,j,selfarr
j=0
Server.ScriptTimeout=999999999
self = Request.ServerVariables("SCRIPT_NAME")
selfarr = split(self,"/")
self = selfarr(UBound(selfarr))
arr = split(request("HouZhui"),",")
%>
<table width="520" border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#66CC99">
<tr bgcolor="#FFFFFF">
<td width="500" height="40" align="center" bgcolor="#57DB9C"><strong>查找结果</strong></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40" align="left">
<%
if Right(Request("WebMuLu"),1)="" Then
WebMuLu = Left(Request("WebMuLu"),len(Request("WebMuLu"))-1)
End If
call bianli(Request("WebMuLu"))
Response.Write("<br/>")
Response.Write("==================查找结果为 <font color=red>" &Cstr(j)&"</font> 个文件=================")
%>
</td>
</tr>
</table>
<%
End If
Function BianLi(path)‘遍历文件夹下可优化的文件并优化
Set fso=Server.CreateObject("Scripting.FileSystemObject")
on error resume next
set objFolder=fso.GetFolder(path)
set objFiles=objFolder.Files
for each objFile in objFiles
filePath=path + "\" + objFile.Name
for i = LBound(arr) to UBound(arr)
if fso.GetExtensionName(objFile.Name) = arr(i) or arr(i) = "*.*" Then
set f = fso.OpenTextFile(filePath,1)
tmpstring = f.ReadAll
if tmpstring <> "" Then
response.Write(filePath +"<br>")
j=j+1
if request("isReplace")="yes" and objFile.Name <> self then
'tmpstring = Replace(tmpstring,Request("MuMaContent"),Request("ReplaceStr"))
'Response.write self
'Response.end
if fso.GetExtensionName(objFile.Name)="asp" then
'tmpstring=ReplaceStr(tmpstring,"[\n\r\t]",chr(13))
else
tmpstring=ReplaceStr(tmpstring,"(tppabs*= *['""]*(\S+)[""'])","")’处理tppabs="xxxxxxx"为空
tmpstring=ReplaceStr(tmpstring,"[\r\n]","")’处理回车符,换行符,空格为空
end if
set f = fso.OpenTextFile(filePath,2)
f.write(tmpstring)
f.close
response.Write("文件"+filePath+"优化完毕!<br>")
end if
end if
end if
next
next
set objSubFolders=objFolder.Subfolders
for each objSubFolder in objSubFolders
nowpath=path + "" + objSubFolder.name
bianli(nowpath)
next
set objFolder=nothing
set objSubFolders=nothing
set fso=nothing
end function
'处理正则表达式函数其中str为需处理的字符串,Pattern为自定义正则表达式,tostr为替换字符
Function ReplaceStr(Str,Pattern,tostr)
If IsNull(Str) Then
ReplaceStr = Str
Exit Function
End IF
ReplaceStr = False
Str = Trim(Str)
Dim RegEx
Set RegEx = New RegExp
RegEx.Pattern = Pattern
'RegEx.Pattern = "[\r\n]"
RegEx.IgnoreCase = True'区分大小写
regEx.Global = True'全部匹配
ReplaceStr = regEx.Replace(Str,tostr)
End Function
%>
经过以上程序处理后,呵呵,原来50K的文件,现在只有21K,一个字“爽”,原来33.9M的文件夹,现在看只有15.8M,节约了不少网页空间,对访问速度已有所帮助,直是太好了...