我想關閉在Windows計算機上的應用程序中運行的VBScript調用服務器的URL時使用的緩存。我用什麼函數/方法/對象來做到這一點?VBScript:禁止緩存服務器對HTTP響應的URL響應URL請求
當第一次調用時,我的基於Linux的Apache服務器會從它正在運行的CGI Perl腳本返回一個響應。但是,腳本的後續運行似乎與第一次使用相同的響應,因此數據將被緩存到某處。我的服務器日誌確認服務器未在隨後的時間內被調用,僅在第一次。
這是我在做什麼。我使用下面的代碼從商業應用程序中(不想提這個應用程序,可能不是我的問題有關):
With CreateObject("MSXML2.XMLHTTP")
.open "GET", "http://myserver/cgi-bin/nsr/nsr.cgi?aparam=1", False
.send
nsrresponse =.responseText
End With
是否有上述對象的功能/方法來關閉緩存,還是應該在調用URL之前調用方法/函數來關閉響應對象上的緩存?
我在這裏尋找解決方案:http://msdn.microsoft.com/en-us/library/ms535874(VS.85).aspx - 不夠有幫助。在這裏:http://www.w3.org/TR/XMLHttpRequest/ - 非常不友好且難以閱讀。
我也嘗試使用HTTP頭設置和html文件標題元數據不使用緩存,迫使:
服務器端的Perl CGI腳本響應返回到調用客戶端的片段設置有效期至0
print $httpGetCGIRequest->header(
-type => 'text/html',
-expires => '+0s',
);
響應HTTP頭設置發送回給客戶機:
<html><head><meta http-equiv="CACHE-CONTROL" content="NO-CACHE"></head>
<body>
response message generated from server
</body>
</html>
上面http頭和html文件頭設置h。沒有工作,因此我的問題。
非常感謝您的時間Tomalak。我發現WinHttpRequest.5.1 COM對象不會緩存。但是,我將不得不做更廣泛的測試以獲得信心。爲每個不同的URL提示+1 - 這絕對是一個值得考慮的提示 - 我可以像WinHttpRequest.5.1一樣使用它,並擴展我們的服務器以處理額外的URL參數。我可能會包含一個高精度的請求時間字段,例如也許是毫秒。作爲解決方案的一部分,這絕對值得考慮。 – therobyouknow 2010-06-17 08:54:16
現在接受的答案,因爲你的隨機url建議命中路由的原因 - 緩存和打破這個,使代碼被迫每次聯繫服務器。 – therobyouknow 2010-06-17 14:26:56
要創建一個唯一的會話ID號,我使用VB函數中建立的日期和計時器,一個隨機數,以及計算機名稱/主機名,其中腳本Date給出今天的日期,Timer給出時間流逝的時間毫秒。隨着隨機數和機器ID,這應該使HTTP GET URL調用唯一。 2個相同的URL調用相同的機會是零。 – therobyouknow 2010-06-17 14:27:24