用asp读取xml时清除缓存的问题与解决办法

前段时间给客户做了几个网页,客户要求在自己的网站中显示自己在新浪博客里的文章,作为网站的一部分。这样的情况可以解决,主要可以通过博客中的 XML来实现,通过用asp来读取博客中XML,将博客中的标题、发布时间等信息显示在网站中。但是在使用的过程中,出现了一个问题:当博客中添加文章后,在网页中读取博客中的XML后进行更新,但是却没有及时更新,查询了很多信息,发现是网站没有及时更新XML数据而造成的。如何解决?先是尝试清除网站的缓存,设置网站中的HTTP头:Cache-Control和值:no-cache。设置后进行测试,发现效果不好,主要问题是这样的设置只是清除了网站内所包含的图片,文本等缓存,没有更新XML缓存,所以没有解决前面的问题。

 

       无奈只能再查找,所幸在CSDN中看到一篇文章,介绍清除缓存的好办法是改变思路,不是清除内容,而是强行加载要更新的内容。主要思路是在打开的路径中添加随机数,因为在iis中访问不同的路径时,内容是强行加载的,没有调用缓存。有了这个思路,改动程序就比较方便了。具体代码如下:


<%
dim xmlDoc
dim http
dim bitem
dim bi
dim title
dim link
dim pubdate
dim days
dim months
dim NM
dim xmlseed
dim conn,strconn,rs
dim ReadSinaRss

Randomize '增加随机数初始化语句


'原本的赋值语句为:xmlseed="http://blog.sina.com.cn/rss /adsbaby.xml",修改后为:
xmlseed="http://blog.sina.com.cn/rss/adsbaby.xml?tmp="&int(rnd*1000)

’注意:在URL地址中,最后增加”?xxx=number“这种形式对浏览内容不会影响,是让浏览地址内容重新加载的一种比较好的办法



Set http=Server.CreateObject("Microsoft.XMLHTTP")
http.Open "GET",xmlseed,False
http.send
Set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.Async=False
xmlDoc.ValidateOnParse=False
xmlDoc.Load(http.ResponseXML)
Set bitem=xmlDoc.getElementsByTagName("item")

if bitem.Length>=0 then
ReadSinaRss="<table width=100% cellpadding=0 cellspacing=0>"
For bi=0 To (bitem.Length-1)
 if bi<=5 then
 
  Set pubdate=bitem.Item(bi).getElementsByTagName("pubDate")
  Set title=bitem.Item(bi).getElementsByTagName("title")
  Set link=bitem.Item(bi).getElementsByTagName("link")

 
  months=mid(pubdate.Item(0).Text,9,3)
  days=mid(pubdate.Item(0).Text,6,3)
 
  if months = "Jan" then NM="01" end if
  if months = "Feb" then NM="02" end if 
  if months = "Mar" then NM="03" end if
  if months = "Apr" then NM="04" end if
  if months = "May" then NM="05" end if 
  if months = "Jun" then NM="06" end if 
  if months = "Jul" then NM="07" end if
  if months = "Aug" then NM="08" end if 
  if months = "Sep" then NM="09" end if 
  if months = "Oct" then NM="10" end if
  if months = "Nev" then NM="11" end if
  if months = "Dec" then NM="12" end if
 
   if len(title.Item(0).Text)>=20 then
    title.Item(0).Text=left(title.Item(0).Text,20)
   end if
   ReadSinaRss=ReadSinaRss&"<tr><td width=10 valign=top ><img src=/Article/images/Article_common3.gif alt=?></td><td class=><a href="& link.Item(0).Text &" target='_blank'>"& title.Item(0).Text&"</a></td><td width=10 ></td><td width = 68>"& NM&"-"& days &"</td></tr>"
 end if
Next
ReadSinaRss=ReadSinaRss&"</table>"
end if
 
response.write("读取正常,谢谢访问:www.kkesoft.com ")

%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值