高分寻求解决打开首页速度慢的方法

古侠 2005-06-28 02:23:15
首页打开时的速度很慢,局域网内打开也要10多秒,达人们多多指导啊
...全文
445 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcbm 2005-06-29
  • 打赏
  • 举报
回复
还有最重要的一点,但也可能不是你所能做到的一点,
那就是不要把什么都往首页上放,你首页上的东西实在是有点多了点
我把你的首页存成静态文件后再用DW打开,半天都没反应,从文件头拉到文件尾奇慢
我的电脑配置也不差,开你的网页就占了我好多资源
wzhiyuan 2005-06-29
  • 打赏
  • 举报
回复
我QQ:28368672,有需要的话+我。
wzhiyuan 2005-06-29
  • 打赏
  • 举报
回复
两个页面我都看了。是都慢。
有一个问题:你的每个include文件是不是都有
“<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">”这些东西?
先把include文件里的这些都去掉再说。
wcbm 2005-06-29
  • 打赏
  • 举报
回复
我刚才看了一下你的网嶡,一大堆的标签错误,建议修正,如:

<img src='img/tp.gif'</td><td align=left

另:
1、建议你的首页减少图片(至少有91张)

2、减少FLASH(至少有26处)

3、少用表格嵌套,你试着改成DIV来试试
xiaoyuehen 2005-06-29
  • 打赏
  • 举报
回复
参考网站:
http://www.shundecate.com 各频道首页, 后缀名虽为 .asp, 但其实是静态的文件

之所以未改成 .htm 是因为, 要修改的相关链接实在太多了.
wcbm 2005-06-29
  • 打赏
  • 举报
回复
怎么中间都还有“</body></html>”?

<td height="24" valign="top"><img src="img/wsjy.gif" width="172" height="24"></td>
<td></td>
</tr>
</table>
</body>
</html>
<body onload="init();">

<table cellpadding="0" cellspacing="0" width="980" height="33" background="img/search_back3.gif">
<!-- MSTableType="layout" -->
gatey 2005-06-29
  • 打赏
  • 举报
回复
会不会是服务器的原因啊
xiaoyuehen 2005-06-29
  • 打赏
  • 举报
回复
将首页生成静态文件, 加入定时器, 每隔一段时间重新生成.
下面是一些函数.

文件: __XmlHttpInc.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Option Explicit%>
<%
Rem ## 远程获得内容
Rem #################################################################
Function GetBinaryContent(strUrl)
GetBinaryContent = Null

Dim oXhttp, strContent
Set oXhttp = Server.CreateObject("Microsoft.XMLHTTP")
'On Error Resume Next
With oXhttp
.Open "GET", strUrl, False, "", ""
.Send
Rem ## 如果请求的文件存在
If .Status = 200 Then
GetBinaryContent = .Responsebody
'GetBinaryContent = .responseStream
Else
GetBinaryContent = Null
response.Write(vbCrLf & "//404")
response.Write(vbCrLf & strUrl)
End If
'response.Write("strUrl: " & strUrl & "<br>")
'strContent = .Responsebody
'response.Write("readystate: " & .readystate & "<br>")
'response.Write("Status: " & .Status & "<br>")
'response.Write("StatusText : " & .StatusText & "<br>")
'strContent = sBytesToBstr(strContent)
'response.Write(GetBinaryContent)
End With

Set oXhttp = Nothing
'If Err.Number <> 0 Then
'response.Write("Error!")
'Err.Clear
'End If
End Function
Rem #################################################################

Rem #################################################################
Rem ## 编码转换 2进制 => 字符串
Function sBytesToBstr(vIn)
If IsNull(vIn) Then
sBytesToBstr = ""
Exit Function
End If
dim objStream
set objStream = Server.CreateObject("adodb.stream")
objStream.Type = 1
objStream.Mode = 3
objStream.Open
objStream.Write vIn

objStream.Position = 0
objStream.Type = 2
objStream.Charset = "GB2312"
sBytesToBstr = objStream.ReadText
objStream.Close
set objStream = nothing
End Function
Rem #################################################################

Function GetTextContent(strUrl)
GetTextContent = sBytesToBstr(GetBinaryContent(strUrl))
End Function


Rem ## 建立目录的程序,如果有多级目录,则一级一级的创建
Rem #################################################################
Function CreateDir(strLocalPath)
CreateDir = False

Dim strLocalFolder
Dim strPath, tmpPath, tmptPath
Dim arrPathList, intLevel

strLocalFolder = Server.MapPath("/")
If Left(strLocalPath, Len(strLocalFolder)) <> strLocalFolder Then
Exit Function
End If

Rem ## 获得目录
strPath = Replace(strLocalPath, strLocalFolder, "")
If Left(strPath, 1) = "\" Then
strPath = Right(strPath, Len(strPath) - 1)
End If

Dim objFolder
Set objFolder = server.CreateObject("Scripting.FileSystemObject")
arrPathList = Split(strPath, "\")
intLevel = UBound(arrPathList)

Dim i
tmptPath = ""
For i = 0 To intLevel
tmptPath = tmptPath & arrPathList(i) & "\"

tmpPath = strLocalFolder & "\" & tmptPath
If Not objFolder.FolderExists(tmpPath) Then objFolder.CreateFolder tmpPath
Next

Set objFolder = Nothing
CreateDir = True
End Function
Rem #################################################################


Rem #################################################################
Rem ## Fso 生成文件
Function fDoDeleteFile(strFileName)
fDoDeleteFile = False

'response.Write(strFileName)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(strFileName)) Then
fso.DeleteFile(strFileName)
fDoDeleteFile = True
Else
fDoDeleteFile = False
End If
Set fso = nothing
End Function
Rem #################################################################

Rem #################################################################
Rem ## Stream 生成文件
Function sDoCreateFile(strFileName, ByRef strContent)
sDoCreateFile = False
Dim strPath
strPath = Left(strFileName, InstrRev(strFileName, "\", -1, 1))
Rem ## 检测路径及文件名有效性
If Not(CreateDir(strPath)) Then Exit Function
'If Not(CheckFileName(strFileName)) Then Exit Function

'response.Write(strFileName)
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(strFileName, ForWriting, True)
f.Write strContent
f.Close
Set fso = nothing
Set f = nothing
sDoCreateFile = True
End Function
Rem #################################################################
%>


下面是一个例子:
文件: create__index__.asp

<!--#include file="__XmlHttpInc.asp"-->
<%
'此处定义更新间隔时间, 单位为小时
Const GI_DIFFNUMBER = 2

Dim dtaQueryUpdate, intHourDiff, strForceUpdate
strForceUpdate = LCase(request.QueryString("f"))

dtaQueryUpdate = request.QueryString("q")
If IsDate(dtaQueryUpdate) Then
dtaQueryUpdate = CDate(dtaQueryUpdate)
Else
dtaQueryUpdate = Now()
End If
intHourDiff = DateDiff("h", dtaQueryUpdate, Now())

If (intHourDiff > GI_DIFFNUMBER) Or (strForceUpdate = "yes") Then
On Error Resume Next
Call doCreateFile()
If Err Then
Err.Clear
response.Write(vbCrLf & "//程序执行错误")
Else
response.Write(vbCrLf & "//程序执行完毕")
End If
Else
response.Write(vbCrLf & "//已更新")
End If
Sub doCreateFile()
Dim strSourceFile, strTargetFile, strTargetFolder

'此处定义相对网站根目录的源文件, 第一个字符不能为/
strSourceFile = "index__.asp"

'更新目标文件名
strTargetFile = "index.asp"

'此处定义相对网站根目录的源文件, 第一个字符必须为/
strTargetFolder = "/"

Dim strServerUrl, strGetUrl
strServerUrl = request.ServerVariables("SERVER_NAME")
strGetUrl = "http://" & strServerUrl
If Right(strGetUrl, 1) <> "/" Then strGetUrl = strGetUrl & "/"
strGetUrl = strGetUrl & strSourceFile
response.Write(vbCrLf & "//" & strGetUrl)

Dim strFileContent
strFileContent = GetTextContent(strGetUrl) & ""
If Not CreateDir(Server.MapPath(strTargetFolder)) Then
response.Write(vbCrLf & "//创建目录" & strTargetFolder & "出错")
End If

If strFileContent <> "" Then
Dim strLocalUrl, strJsCode
strLocalUrl = request.ServerVariables("SCRIPT_NAME")
strJsCode = vbCrLf & "<img width=""0"" height=""0"" src=""" & strLocalUrl & "?q=" & Server.URLEncode(Now()) & """>" & "<!--" & Now() & "-->"
Call sDoCreateFile(Server.MapPath(strTargetFolder & strTargetFile), strFileContent & strJsCode)
Else
response.Write(vbCrLf & "//空")
End If
End Sub
%>
古侠 2005-06-29
  • 打赏
  • 举报
回复
TO wzhiyuan(我是谁)

用test.htm的方法测试的结果是:打开原首页要12s,打开test.htm要5s

看来不是数据库连接的原因吧?

是的,首页中用了大量的表格,还有大量的图片.是不是要把所有的表格都用response.write("<table>")来代替呢?

古侠 2005-06-29
  • 打赏
  • 举报
回复
谢谢;
http://www.zj-steel.com 就是这一个网站,大家可以试一下知道了.
zwrtv 2005-06-29
  • 打赏
  • 举报
回复
路过学习下
liujian098 2005-06-29
  • 打赏
  • 举报
回复
我觉得还是少用图片,并且,大图片要分割!
wzhiyuan 2005-06-29
  • 打赏
  • 举报
回复
1。首页打开后,查看源文件,全选,复制,粘贴为 "test.htm"文件,然后上传到web站点,从不同的地点访问它,如果仍然比较慢,则可以断定:原来的慢和静态因素(嵌套表格,大的图片,样式表)有很在关系;如果极快,则是访问数据库的问题,继续步骤2.
2,在访问各个数据库的模块前加上<% vbsBegin = Timer()%>在模块后加上<%vbsEnd = Timer():response.write "<br/>这一块耗时"&(vbsEnd - vbsBegin) * 1000 & "豪秒<br/>"
%> 来测出各块的用时.对用时总是很高的块,检测相关代码(sql语句是否效率高?相关的表的是否有索引?等等)
wzhiyuan 2005-06-29
  • 打赏
  • 举报
回复
1。首页打开后,查看源文件,全选,复制,粘贴为 "test.htm"文件,然后上传到web站点,从不同的地点访问它,如果仍然比较慢,则可以断定:原来的慢和静态因素(嵌套表格,大的图片,样式表)有很在关系;如果极快,则是访问数据库的问题,继续步骤2.
2,在访问各个数据库的模块前加上<% vbsBegin = Timer()%>在模块后加上<%vbsEnd = Timer():response.write "<br/>这一块耗时"&(vbsEnd - vbsBegin) * 1000 & "豪秒<br/>"
%> 来测出各块的用时.对用时总是很高的块,检测相关代码(sql语句是否效率高?相关的表的是否有索引?等等)
iamgsyy 2005-06-29
  • 打赏
  • 举报
回复
xuexi
caobin518 2005-06-29
  • 打赏
  • 举报
回复
上面各位都说。我就不说!
补充一点:

写sql语句时,不要用*,另外带条件查询时最好不要用到in


以前我是这么优化的。
sfwxw0456 2005-06-29
  • 打赏
  • 举报
回复
1、首页能用静态页面尽量用静态页面!
2、页面里不要表格套表格,太多的表格会影响速度(因为表格是要表格里的内容全部加载完之后才进行显示)!
3、给代码减肥。
4、看看你的图片是不是很大、或是特别多!
freelyl 2005-06-29
  • 打赏
  • 举报
回复
代码可能有问题。另外HTML可能也多没用的代码在。用工具清一下。
wangwm 2005-06-29
  • 打赏
  • 举报
回复
Response.Buffer = True
dsclub 2005-06-29
  • 打赏
  • 举报
回复
WEB标准么?
加载更多回复(15)

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧