みなさん、おはようございます。
アップグレードとリファクタリングが必要なレガシーASPクラシックアプリケーションに取り組んでいます。行う必要のある最大の改善点の1つは、データベースから結果をキャッシュすることでアプリを高速化することでした。これは、それらを.datファイルにキャッシュすることで正常に実行できました。このアプリケーションは特定のパスをたどるので、使用を終えた後、未使用のキャッシュファイルを削除しています。ただし、アプリケーションの最後の.aspページ(PV.asp)では、ファイルは削除されるべきではないときに削除されます。
私の意図はこれです、
<input type="button" value="Done" style="width: 56px; height: 40px" onclick="finish()" />
^これは「完了」ボタンのコードで、finish()関数を呼び出します。以下はどれですか:
function finish() {
var size = "<%response.write(size) %>";
if (size == "0") {
var done = confirm("All Items mod, would you like to save?");
if (done == true)
{
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var concode = "<%=Replace(concode, "\", "\\" )%>";
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById('concode').value = concode;
document.forms["confirm"].submit();
}
}
<%if NOT rsTrxTy.EOF then
if rsTrxTy.fields("TYPE").value = "TO" then%>
~Stuff happens here~
<%end if
if rsTrxTy.fields("TYPE").value = "TI" then%>
~Stuff happens here~
<%end if
end if
if NOT rsOrdrs.EOF then%>
~Stuff happens here~
<%end if %>
<%
dim fso
Set fso = Server.CreateObject("Scripting.FileSystemObject")
fso.DeleteFile "C:\M\cache\rstrxis-" & Session.SessionID & ".dat"
fso.DeleteFile "C:\M\cache\rstrxos-" & Session.SessionID & ".dat"
fso.DeleteFile "C:\M\cache\rstrxty-" & Session.SessionID & ".dat"
fso.DeleteFile "C:\M\cache\rsords-" & Session.SessionID & ".dat" %>
}
}
else {
alert("All items have not been mod.");
}
}
ユーザーが[完了]ボタンをクリックすると、アイテムに加えられた変更がデータベースにコミットされます。私の意図は、このアクションが実行されているときに、キャッシュされたファイルが削除されることです。 ただし、ユーザーが[完了]ボタンをクリックしなくても、DeleteFileコマンドは実行されます。ページの読み込みが完了すると実行されます。これにより、PV.aspのロード時に削除されたキャッシュファイルからページをロードしようとするため、問題が発生します。 このアプリはウィンドウを閉じずにほぼ常に使用することを目的としているため、セッションIDは同じままであり、キャッシュされたファイルを削除することはできません(アプリを再起動すると、既にあるものを読み込もうとするため)キャッシュ)。
私の質問は、ユーザーが[完了]をクリックしたときにのみ実行されるjavascript関数にファイルが含まれているはずなのに、なぜファイルが削除されるのかということです。このプロジェクトが私に強制されたので、私はASP / Javascriptの経験がありません。それで、これが単純な質問であるならば、私は謝罪します、しかし私は正直に困惑しています。
注-ASP.Net への移行は問題外です。これを提案しないでください。