html全自动生成安卓版,科讯cms内容页全自动定时生成HTML文件的设计

本文介绍了如何通过定时任务实现HTML静态网站的自动生成,以降低服务器负载并提升访问速度。通过在内容页模板中添加JS引用,并设定特定时间间隔,如每三天生成一次,确保内容的时效性。当用户访问时,系统会检查是否需要更新,从而在后台静默更新页面,确保用户体验。同时,文章详细阐述了ASP代码实现的逻辑,包括获取参数、判断生成时机以及内容的刷新过程。
摘要由CSDN通过智能技术生成

HTML静态网站能尽可能的减轻服务器的负载,加快网站访问速度,提高网页的收录量和引擎关键字排名,但对于内容多的网站,大批量生成HTML时会导致服务器在生成时无法访问,而在添加时生成的内容页却因为后续内容的添加还得时不时生成一下,这可是个麻烦事

我在/网站时,实现以了下功能,所有静态内容页定时自动生成一次,如一个新闻页,可以定为三天自动生成一次,每三天一旦有客户访问,系统即会判断是不是三天前的老内容,如果是即在后台悄无声息的自动更新一次!如 引用代码为:

ChannelID=1&ID=6399&ht=898868&jt=600其中

ChannelID=1代表新闻模型生成

ID=6399 表示新闻ID

ht=898868 上次生在时间 -- 本月1号0时0分到上次生成秒数

jt=600 间隔生成时间,表示每600秒即自动生成一次

--------以下是具体做法

1 在需要自成的内容页模板中,添加JS引用,如下

--------jt=86400代表1天生成一次,你可以改成别的数字

2 根目录新建文件夹 asp2html ,在里面新建文件 autohtml.asp 内容如下

-------------------以下为ASP代码---------------------------

Response.Buffer=true

Dim KSCls

Set KSCls = New RefreshHtmlSave

KSCls.Kesion()

Set KSCls = Nothing

Class RefreshHtmlSave

Private KS,KSRObj,ht,jt,ChannelID,ItemName,Table,f,ReturnInfo,FsoHtmlList

Private Sub Class_Initialize()

Set KS=New PublicCls

Set KSRObj=New Refresh

End Sub

Private Sub Class_Terminate()

Call CloseConn()

Set KSRObj=Nothing

Set KS=Nothing

End Sub

Public Sub Kesion()

Server.ScriptTimeOut=9999

ht = int(Request("ht"))             '上次生成时间数 本月1号0时0分到上次生成秒数

jt = int(Request("jt"))           '间隔生成的时间 '600=10分钟,86400=1天,259200=3天 604800=7天,864000=10天,1296000=15天,最大为=2592000=30天

ChannelID = Request("ChannelID")     '按频道处理

Application("auto_htmltime")=0

if not(IsNumeric(ChannelID)) or not(IsNumeric(Request("ID"))) or not(IsNumeric(ht)) or not(IsNumeric(jt)) then

response.end:Exit Sub

else

Application.Lock

Application("auto_htmltime")=int(day(Date)*86400+timer)-ht '本月1号0时0分到现在所经过的秒数-上次生成秒数

Application.UnLock

end if

Table=KS.C_S(ChannelID,2)

ItemName=KS.C_S(ChannelID,3)

if int(Application("auto_htmltime"))>jt or int(Application("auto_htmltime"))<0  then

If KS.C_S(ChannelID,7)<>1 and KS.C_S(ChannelID,7)<>2 Then Exit Sub

Call RefreshContent

end if

End Sub

'生成内容页的处理过程

Sub RefreshContent()

Dim NowNum, R_Sql, R_RS, TotalNum,ID,UpdateSql

Dim StartDate, EndDate, FolderID, RefreshTotalNum,StartID,EndID

NowNum = 0

RefreshTotalNum=1

ID=KS.G("ID")

R_Sql="Select  * From " & Table &" where Verific=1 and ID =" & id

If DataBaseType=1 Then

Dim Cmd : Set Cmd = Server.CreateObject("ADODB.Command")

Set Cmd.ActiveConnection=conn

Cmd.CommandText="KS_TSql"

Cmd.CommandType=4

CMD.Prepared = true

Cmd.Parameters.Append cmd.CreateParameter("@SQL",202,1,8000,R_Sql)

Set R_RS=Cmd.Execute

Set Cmd=Nothing

Else

Set R_RS=Conn.Execute(R_Sql)

End If

If R_RS.EOF And R_RS.BOF Then

Response.Flush

R_RS.Close:Set R_RS=Nothing

Exit Sub

Else

Dim DocXML:Set DocXML=KS.arrayToXml(R_RS.GetRows(1),R_RS,"row","root")

Set KSRObj.Node=DocXml.DocumentElement.SelectSingleNode("row")

KSRObj.ModelID=ChannelID

KSRObj.ItemID = KSRObj.Node.SelectSingleNode("@id").text

If KS.C_S(ChannelID,7)<>0 Then KSRObj.RefreshContent()

End If

R_RS.Close:Set R_RS=Nothing

End Sub

End Class

%>

-------------------ASP代码结束--------------------------

3 重新生成新闻页,即可发现页面中多了一个JS引用,你可以先把jt=86400改成10,即10秒自动生成一次,测试生成效果

{$getlasthtmltime} -------------这是一个本人写的自定义函数,在函数文件中添加一个即可,我的方法如下:

打开KS_CLS文件夹中的Kesion.Label.CommonCls.asp文件,找到

'=======网站通用参数开始===============

这一行,在下面的行中添加一行,如下

case "getlasthtmltime"    echo int(day(Date)*86400+timer)

同样的道理,无论是新闻内,下载页,还是其它的,都可以用这个方法实现自动定期生成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值