存档
新写的xmlClass,有些简陋,不过常用的功能都可以直接调用了。
<%
‘==============================================================
‘ xmlClass v1.10.0617 by CatSeven
‘==============================================================
‘ 文件:xmlClass.asp
‘ 功能:常用的XML处理
‘ 作者:苗启源(http://www.miaoqiyuan.cn)
‘==============================================================
class xmlClass
Dim xmlobj
Public Sub Class_Initialize
set xmlobj = Server.CreateObject("Microsoft.XMLDOM")
End Sub
Public Sub Class_Terminate
[...]
ASP也能处理JSON数据?呵呵,刚才在Pjblog论坛上看到一个兄弟写的文章,没有测试,不过理论上一定是可以的~ 太晚了,不测试了。
以前处理JSON太麻烦了,输出还好说,循环一下就可以了,解析真的很头疼。所以遇到 这种问题API问题,一般都是XML处理,不太喜欢,很麻烦。
<%
Dim sc4Json
Sub InitScriptControl
Set sc4Json = Server.CreateObject("MSScriptControl.ScriptControl")
sc4Json.Language = "JavaScript"
sc4Json.AddCode "var itemTemp=null;function getJSArray(arr, index){itemTemp=arr[index];}"
End Sub
Function getJSONObject(strJSON)
sc4Json.AddCode "var jsonObject = " & strJSON
Set getJSONObject = sc4Json.CodeObject.jsonObject
End Function
Sub getJSArrayItem(objDest,objJSArray,index)
[...]
JS有Base64.js,PHP内建Base64支持,ASP处理Base64数据就没有那么幸运了,既没有Base64.asp,也没有内建的函数,这可怎么办?
ASP一般用到Base64的时候,都是处理二进制文件。简单的文本,就没有必要编码咯。ASP处理二进制又是一个弱项,有没有好的方法呢?xml中的bin.base64也许可以拿来用用。
[asp]< %
'调用xml的编码,用于参照
function Base64Encode(strData)
dim objAds,objXd
set objAds=createobject("adodb.stream")
objAds.Type=2
objAds.charset="unicode"
objAds.mode=3
call objAds.open()
objAds.writeText strData
objAds.Position=0
objAds.Type=1
objAds.Position=2
[...]
最近有个工作,知道了域名,把ip导出来,大约800多条记录,一个一个查麻烦了。有没有其他方法能让asp通过域名查IP呢?
在网上搜索了一下,asp通过域名查ip需要安装一个TCPIP.DNS的组件。我下载了一个测试了一下,效率并不是很高。
一般查询域名的ip的方法是ping一下,得到一个ip。我们先用VBScript测试。
Function strCut(strContent,StartStr,EndStr,CutType)
Dim strHtml,S1,S2
strHtml = strContent
On Error Resume Next
Select Case CutType
Case 1
S1 = InStr(strHtml,StartStr)
[...]
当PHP.ini设置register_globals = On是,通过GET提交的数据可以直接使用表单名调用GET提交的数据。asp就不可以,我想到了asp的execute,也谢了一个脚本,还能过滤SQL注入字符串
<%
Dim myRegExp
set myRegExp=New RegExp
myRegExp.Pattern = "[^a-z0-9_]"
myRegExp.Global=True
for each Req in Request.Querystring
ReqV=Request.Querystring(Req)
if trim(ReqV)<>"" then
ReqV=replace(ReqV,"""","""""")
Req=myRegExp.Replace(Req,"")
Execute(Req&"="""&ReqV&"""")
end if
next
response.write a
%>
调用很简单。比如GET提交/get_Test.asp?a=111&b=222
则直接可以使用Response.write a,输出结果为111。简单吧~
再次感谢小秦(Q48080163)提出的bug
本文只提供思路,程序代码在此就不方便发布了~
第一:每个程序代码都不样
第二:不能随便公布客户的代码~呵呵
如有类似需求,可联系QQ:1301425789
可以看到现在首页的执行时间已经是1.8秒以上了,如果访问量太大,有可能就会导致耗资源,加入缓存是最好的解决方法。我设置的数据库表如下:
Cache_id
Cache_key
Cache_Content
Cache_LastCreate
自动编号
缓存关键字
缓存内容
最后生成日期
设计缓存的时候,主要需要考虑以下两点:
1) 不经常改动部分缓存数据同步
保持缓存同步有两种方法:设置缓存刷新频率、实时更新
设置缓存刷新频率
<%
缓存关键字:http://www.aaa.com/cp_view.asp?ID=68727
更 新 频率:1天
到 期 日期:最后生成日期+更 新 频率
Sql:select Cache_Content from CacheTable where Cache_key=缓存关键字 and Cache_LaseCreate<到期日期
没有找到记录:{
将页面数据保存到数据库
select * from CacheTable where Cache_key=缓存关键字
没有记录{插入记录}有记录{更新生成日期,并保存记录}
}找到记录:{
直接输出
}
%>
实时更新
这种有点麻烦,但是是一个比较好的方案。唯一的缺点是保存的时候需要多次操作数据库。以 市场页为例:
给市场数据库添加一个最后更新日期
数据添加页面:凡是该分类下的所有页面更新,均更新最后更新日期。
最终显示页面:多表查询,如果当前市场最后更新日期<缓存日期,并且有缓存则直接输出缓存,否则创建缓存并输出。
2) (经常改动不废)非静态的部分
这个比较简单,主要是会员登录,ASP脚本判断状态,输出JS更改页面的动态部分