是否可以将Javascript函数存储在内存中,以便在网站的多个页面上使用

Is it possible to store a Javascript function in memory for use on multiple pages of site?

本文关键字:网站 Javascript 函数 存储 是否 内存      更新时间:2023-09-26

我有一个很长的javascript函数(大约缩小了72k),这是我网站上几个页面所必需的。我现有的在页面上使用该函数的方法是通过通常的方式调用脚本:

<script type="text/javascript" src="./javascript/complex_function.js"></script>

然而,这涉及到读取和解析每个页面上需要的脚本。如果我能把这个函数存储在浏览器的内存中,然后简单地从那里调用它,那么它看起来会更高效、更快(是吗?)

遗憾的是,sessionStorage似乎只支持作为字符串的键和值的存储。我已经尝试过将函数字符串化(正如其他地方所讨论的:Javascript对象存储在sessionStorage或localStorage中),比如:

// First call the function in an initial page of the site:
<script type="text/javascript" src="./javascript/complex_function.js"></script>
// Then stringify it and store in sessionStorage:
sessionStorage.setItem('my_function', JSON.stringify(my_function));

此后,从理论上讲,我应该能够在我的网站上任何活动会话的地方从sessionStorage检索函数,如下所示:

var temp = JSON.parse(sessionStorage.getItem('my_function');

尽管(1)这不起作用,或者至少我找不到让它起作用的方法,以及(2)即使我能让它发挥作用,它仍然需要解析函数,这将违背目的(对吧?)

所以。。。在内存中存储Javascript函数的最佳方式是什么(请不要使用cookie),以便可以从我网站上的任何页面调用它?(或者这可能吗?)

您的浏览器已经为您完成了这项工作。它将在脚本第一次下载时缓存脚本,以减少加载时间,因此一旦加载,第一次对该文件的连续请求将更快,因为它是从本地机器而不是服务器上提取的。

首先,我认为将js函数存储在内存中不是一个好主意。根据我的经验,sessionStorage只存储字符串值,所以您可以尝试eval()