webForumDet fria alternativet

Sökfunktion med xmlhttp och FSO problem med cache

ASP

0 svar · 157 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Hej

Jag försöker skapa en sökfunktion som ska söka igenom alla filer i en katalog. Filerna är av typen asp.

För detta använder jag mig FSO för att hitta vilka filer som finns sedan hämtar jag informationen från varje fil med xmlhttp.

Problemet är att sidorna chachas varför? Hur kan man lösa detta?
Om en fil innehåller enbart asp kod så får jag felmeddelande hur kan man hindra det.

Om det blir fel på en fil så får strSida samma värde som sidan innan. Varför?

Här är min kod som jag avnäder mig av. Den skriver nu ut allting från alla sidor sedan ska koden göras om så att endast sökresultatet skrivs ut.

Vad tror ni om denna metod? Vill inte använda mig av en datbas för mina sökningar och MS Indexing services tillåts inte av mitt webhotell. Finns det nån bättre lösning än min?

<%
response.expires = -1000
response.addheader "pragma", "no-cache"
session.LCID =1053

Function BinToText(varBinData, intDataSizeInBytes)
  const adFldLong = 128
  const adVarChar = 200
  set objRS = Server.CreateObject("ADODB.Recordset")
  
  objRS.Fields.Append "txt", adVarChar, intDataSizeInBytes, adFldLong
  objRS.Open
  
  objRS.AddNew
  objRS.Fields("txt").AppendChunk(varBinData)
  tmp = objRS("txt").Value
  objRS.Close
  BinToText = tmp
End Function

Function RemoveStyle(ByVal sString)
	Dim objRegExp
	Set objRegExp = New RegExp
	objRegExp.Global = True
	objRegExp.IgnoreCase = True 
	objRegExp.Pattern = "<style[\s\S]*?</style>"
	RemoveStyle = objRegExp.Replace(sString & "", " ")
	Set objRegExp = Nothing
End Function

Function RemoveJava(ByVal sString)
	Dim objRegExp
	Set objRegExp = New RegExp
	objRegExp.Global = True
	objRegExp.IgnoreCase = True   
	objRegExp.Pattern = "<script[\s\S]*?</script>"
	RemoveJava = objRegExp.Replace(sString & "", " ")
	Set objRegExp = Nothing
End Function

Function RemoveHTML(ByVal sString)
	Dim objRegExp
	Set objRegExp = New RegExp
	objRegExp.Global = True
	objRegExp.IgnoreCase = True 
	objRegExp.Pattern = "<[^>]*>"
	RemoveHTML = objRegExp.Replace(sString & "", " ")
	Set objRegExp = Nothing
End Function

Function hamtaSida(sokvag)
    on error resume next
	Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
    objHTTP.Open "GET", sokvag, False
    objHTTP.setRequestHeader "Content-type","text/html"
    objHTTP.Send
    strSida = BinToText(objHTTP.responseBody,35000)
    Set objHTTP = Nothing
	hamtaSida = strSida
End Function

set objFS = server.createObject("Scripting.FileSystemObject")
set objFolderRoot = objFS.getFolder(application("driver")&application("rootFolder")&"\pages") 
set colFiles = objFolderRoot.Files

For each objFile in colFiles
  strSida = hamtaSida(application("httpAdress")&"pages/"&objFile.name)
  strSida = RemoveStyle(strSida)
  strSida = RemoveJava(strSida)
  strSida = RemoveHTML(strSida)
  response.write "<strong>"&objFile.name&"</strong><br><br>"
  response.write strSida&"<hr>"
  strSida = ""
Next
%>

I koden får ni ändra sökvägarna så att de fungerar för er

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)