1

如果用户按下浏览器上的后退按钮,我如何缓存显示的网站内容而无需对函数进行另一个 ajax 调用?

我认为我的问题没有多大意义,所以这里有更详细的信息:在我们的网络邮件服务器中,每当用户点击收件箱按钮时,它会将他们带到另一个页面,显示新收到的邮件的主题和以前存储的邮件。(RetrieveNewMessages 和 ReadMailFolderContents)。当用户收到大量邮件或以前存储的邮件时,这些操作可能需要很长时间才能处理,所以我希望这些功能仅在用户第一次进入收件箱页面时运行。当用户点击某个主题显示邮件内容并按返回返回收件箱页面时,这些函数又被运行,导致查看邮件有很大的延迟。

该页面最初加载一个加载屏幕,对服务器进行 ajax 调用,当服务器处理完这两个函数后,它会显示存储在字符串数组中的内容。

这里或多或少是它目前看起来的骨架代码:

主副

<%sub main()%>
    <div id="loading" align="center">
        <img src="mail_loading.gif" style="vertical-align:middle;"/>
        Retrieving your mails...
    </div> 
    <script language="javascript">
        window.onload = function() {
            ajaxed.callback('do', 'mail_listing', null,
            function(t) {
                $('loading').hide();
            });
        };
    </script>
    <div id="mail_listing"></div>
<%end sub>

子页面Part_do()(Ajax调用)

<%
Sub pagePart_do()

'Gets new mails from pop3 server
Call RetrieveNewMessages(mailbox,uniqueIDTxtFilePath)

retrievedMailContentArray = ReadMailFolderContents(mailDirName,uniqueIDTxtFilePath,flag)

...Run the for loop on retrievedMailContentArray and format it in HTML
%>

所以本质上,我希望在用户按下返回按钮返回收件箱页面时缓存 pagePart_do() 显示的 html 内容。

服务器在 ASP Classic 上运行并使用ajaxed插件。

4

1 回答 1

1

可能有很多选择可以解决这个问题。一种选择是使用 HTML5 和 Web 存储。几乎所有当前的浏览器都支持 Web 存储,并允许保存多达 5MB 的数据。Web 浏览器通过 JavaScript 中的 localStorage 对象公开 Web Storage。确定 Web 浏览器是否支持 Web 存储的一种简单方法是执行以下 JavaScript 代码:

var webStorageSupported = ('localStorage' in window) && window['localStorage'] !== null;

填充网络存储:

localStorage.setItem('name', 'arman');

要获取值:

var value = localStorage.getItem('name'); 
于 2013-02-21T01:24:44.167 回答