Tôi muốn tắt bộ nhớ cache được sử dụng khi cuộc gọi URL đến máy chủ được tạo từ VBScript đang chạy trong một ứng dụng trên máy Windows. Tôi sử dụng chức năng/phương pháp/đối tượng nào để thực hiện việc này?VBScript: Vô hiệu hóa bộ nhớ đệm của phản hồi từ máy chủ đến yêu cầu HTTP GET URL
Khi cuộc gọi được thực hiện lần đầu tiên, máy chủ Apache dựa trên Linux của tôi trả về phản hồi từ tập lệnh CGI Perl đang chạy. Tuy nhiên, các lần chạy tiếp theo của tập lệnh dường như đang sử dụng cùng một phản hồi như lần đầu tiên, vì vậy dữ liệu đang được lưu trữ ở đâu đó. Nhật ký máy chủ của tôi xác nhận rằng máy chủ không được gọi trong những lần tiếp theo đó, chỉ trong lần đầu tiên.
Đây là những gì tôi đang làm. Tôi đang sử dụng đoạn mã sau từ bên trong một ứng dụng thương mại (không muốn đề cập đến ứng dụng này, có lẽ không liên quan đến vấn đề của tôi):
With CreateObject("MSXML2.XMLHTTP")
.open "GET", "http://myserver/cgi-bin/nsr/nsr.cgi?aparam=1", False
.send
nsrresponse =.responseText
End With
Có một hàm/phương pháp trên đối tượng trên để tắt bộ nhớ đệm , hoặc tôi nên gọi một phương pháp/chức năng để tắt bộ nhớ đệm trên một đối tượng phản ứng trước khi thực hiện URL?
Tôi đã xem giải pháp sau đây: http://msdn.microsoft.com/en-us/library/ms535874(VS.85).aspx - không đủ hữu ích. Và ở đây: http://www.w3.org/TR/XMLHttpRequest/ - rất không thân thiện và khó đọc.
Tôi cũng đang cố gắng để buộc không sử dụng bộ nhớ cache sử dụng cài đặt tiêu đề http và tiêu đề tài liệu html dữ liệu meta:
Snippet của server-side Perl script CGI mà trả về phản ứng lại cho khách hàng gọi điện thoại, hết hạn về để 0.
print $httpGetCGIRequest->header(
-type => 'text/html',
-expires => '+0s',
);
thiết lập tiêu đề http để đáp ứng được gửi lại cho khách hàng:
<html><head><meta http-equiv="CACHE-CONTROL" content="NO-CACHE"></head>
<body>
response message generated from server
</body>
</html>
Phần header http trên và tài liệu đầu html thiết lập h không làm việc, do đó câu hỏi của tôi.
Cảm ơn bạn rất nhiều vì đã dành thời gian cho Tomalak. Tôi thấy rằng đối tượng WinHttpRequest.5.1 COM không cache. Tôi sẽ phải làm thử nghiệm rộng hơn để có được sự tự tin, tuy nhiên. 1 cho các URL khác nhau-mỗi-thời gian tip - đó là một chắc chắn là một mẹo để xem xét - Tôi có thể sử dụng đó cũng như WinHttpRequest.5.1 và mở rộng máy chủ của chúng tôi để đối phó với tham số URL thêm. Tôi có thể sẽ bao gồm trường thời gian yêu cầu có độ chính xác cao, ví dụ: millisecs có lẽ. Đó chắc chắn là giá trị xem xét như là một phần của giải pháp. – therobyouknow
bây giờ là câu trả lời được chấp nhận làm gợi ý url ngẫu nhiên của bạn truy cập nguyên nhân tuyến đường - lưu vào bộ nhớ cache và ngắt đoạn mã này để mã đó buộc phải liên hệ với máy chủ mỗi lần. – therobyouknow
Để tạo số ID phiên duy nhất, tôi đang sử dụng hàm Date và Timer được xây dựng trong VB, một số ngẫu nhiên, cùng với tên máy tính/tên máy chủ của PC nơi tập lệnh Date cung cấp ngày, Timer cho thời gian trôi qua mili giây. Cùng với số ngẫu nhiên và id máy, điều này sẽ làm cho lệnh gọi HTTP GET URL là duy nhất. Cơ hội của 2 cuộc gọi URL giống hệt nhau là bằng không. – therobyouknow