Създадох страница в ASP, която зарежда динамично съдържание с код, подобен на този:
<%
var1 = int(rnd * 5) + 1
var2 = int(rnd * 10) + 1
%>
<html>
<body>
what variable 1 is: <%=var1%>
what variable 2 is: <%=var2%>
</body>
</html>
След това имам друга страница, която използва Server.Execute, за да изпълни предишния файл, споменат 2+ пъти, използвайки цикъл. Кодът изглежда така:
<% filename = request.querystring("page") %>
<table class="domtable">
<% for j = 1 to 2%> <%qnumb = qnumb + 1%>
<tr>
<td align="left">
<%server.execute (filename)%>
<% If qnumb < 2 then%>
<br/><hr><br/>
<%end if%>
</td></tr>
<%next%>
</table>
Така че през последните няколко месеца това работи перфектно за мен, зареждайки различни числа за двете променливи в двете отделни изпълнения. След това днес дублирах папка на моя сървър, преименувах я и сега по магия променливите са еднакви около 9 от 10 пъти, когато браузърът се опреснява.
Това ми се случи със същите файлове на втория ми сървър преди месец и трябваше да изтрия всички файлове от втория сървър и да ги изтегля от първия си сървър (този, който се дублира сега), след което да ги кача обратно и това поправих го. За съжаление, не изтеглих цялото съдържание на сървъра на първия си сървър, така че не мога да обърна процеса. Така че не съм сигурен дали този проблем е от страна на сървъра или е свързан с кода, който пиша? Просто не знам защо ще работи толкова дълго, след което просто спира да работи от нищото.
Опитах да използвам мета контроли без кеш. Изтрих новата папка, която дублирах по-рано от сървъра и това не проработи. Опитах също да изтрия файлове от последните няколко дни, които са качени, но това също не проработи. Опитах се да заредя „име на файл“ като масив като:
filename(1) = request.querystring("page")
filename(2) = request.querystring("page")
for j = 1 to 2
Server.Execute(filename(j))
next
Наистина се надявам някой да знае какво правя грешно тук.
-РЕДАКТИРАНЕ-
Аз също правя това и получавам същите резултати.
<%
'rnd.asp'
pStr = "private, no-cache, must-revalidate"
Response.ExpiresAbsolute = #2000-01-01#
Response.AddHeader "pragma", "no-cache"
Response.AddHeader "cache-control", pStr
server.execute ("rndj.asp")
response.write ("<hr>")
randomize(3)
server.execute ("rndj.asp")
%>
<%
'rndj.asp'
pStr = "private, no-cache, must-revalidate"
Response.ExpiresAbsolute = #2000-01-01#
Response.AddHeader "pragma", "no-cache"
Response.AddHeader "cache-control", pStr
randomize
response.write rnd
response.write "<br>"
response.write rnd
%>
Започнах да използвам този код по-долу, който разглежда посочения файл като обикновен текст и премахва asp таговете от него, след което използва Execute, за да го стартира в оригиналния файл. Проблемът с това е, че всички мои страници, които аз наричам, използват в тях за други ресурси и заместващият скрипт няма да ми позволи да добавя asp тагове около включващите редове.
<%
Dim sTargetFile, sTargetFileContents
Dim oFSO, sContents
Function GetFileContentsForExecution(sTargetFile)
'Obtain a reference to the FileSystemObject
Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
'Obtain the file contents
sContents = oFSO.OpenTextFile(Server.MapPath(".") & "\" & sTargetFile).ReadAll
Set oFSO = Nothing 'reference to the FileSystemObject
'Remove the ASP scripting tags
rand = int(rnd * 2)
sContents = Replace (sContents, "<" & "%", "")
sContents = Replace (sContents, "%" & ">", "")
GetFileContentsForExecution = sContents
End Function
sTargetFile = "rndj.asp"
for j = 1 to 6
'Get the contents of the file to execute
sTargetFileContents = GetFileContentsForExecution(sTargetFile)
Execute sTargetFileContents
next
if j < 3 then
response.write ("<br/><hr><br/>")
end if
%>