在脚本/注释/隐藏分区中存储其他数据

时间:2013-11-15 22:22:28

标签: javascript html5 browser

来自旧学校,我只是问自己,我应该在哪里嵌入我的JS代码的附加数据?

评论标签

在旧时代(2008年),我曾经在评论栏中存储数据。我现在对此非常怀疑。我不确定一个或多个流行的浏览器是否在页面加载时删除了注释标记。除了这种不安全感,这总是运作良好。特别是一个人不必担心标签等,除非 - >包含在数据中。

Hidden Div

我在制作中使用的另一种常用技术是在隐藏的div中存储附加信息。同样工作得非常好,并且使用div前面的隐藏类/样式不会引入在加载时可见的数据片段。

脚本标记

通过阅读HTML5规范,我放弃了其他数据应该存储在标签内部。这也提供了使用src =“”文件加载大量数据并直接在javascript中嵌入数据的机会(Base64编码字符串等)。也可以选择纯文本格式并直接在脚本标记中写入。

因此,考虑所有这些选项,最常见的是什么?我可以将src属性用于脚本标记中的任何数据格式吗?服务器如何处理这些?

感谢阅读。


更新

我需要在HTML页面上存储数据。这是关于提供额外的数据来保存Server / AJAX请求。

一个很好的例子就是拥有一个照片搜索网站,其中一个人发现可以说10k张照片。每张照片都有一张身份证。由于我们有一个小网站,我们只能说十亿张图片。使用Base64编码,我们将每个id存储为5个字节(6 * 5 = 30bit)。现在我们发送嵌入在HTML页面中的10k * 5 = 50KB的附加信息。由于我们使用压缩HTML,因此50KB的价值可能大约为30KB,所以这不是一个大问题。

从这些ID我们现在可以生成图片URI / URL链接。因此,当用户上下滚动结果列表时,只需要请求图片,并且没有额外的往返点击服务器,并且使用CDN传送图片。

原因我不需要这张照片,但想法很相似。

3 个答案:

答案 0 :(得分:0)

您尝试使用window.localStorage ...示例:


    //basic function
    function session(v1,v2){
        if(typeof v2 == "undefined"){
            return window.localStorage.getItem(v1);
        } else {
            window.localStorage.setItem(v1, v2);
            return 0;
        }
    }

    //example
    //save
    session("my.private.data", "someValue");
    //show
    alert(session("my.private.data"));
    //use
    var myvar = session("my.private.data");

答案 1 :(得分:0)

您始终可以在隐藏的div上设置自定义属性。请参阅以下链接:

http://www.javascriptkit.com/dhtmltutors/customattributes.shtml

答案 2 :(得分:0)

这是一个特定于.NET的答案,有点冗长和抽象,但希望你能得到这个想法。总的来说,我使用JavaScriptSerializer在输出缓存中存储了大量数据(我可以),并使用一行代码将C#中的对象序列化为JSON或将反序列化器JSON转换为C#对象。

如果您使用.NET,可以在此处找到它:
http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer%28v=vs.110%29.aspx

现在,它的优点在于数据完全采用JSON格式,换句话说,它完全可以被JS使用。我通常只是将它存储在像Data这样的全局变量中(或者那些行中的某些东西,在我的例子中它实际上很少是全局变量)。

这意味着如果我在服务器端有一个复杂的数据结构,我可以简单地在客户端调用相同的结构而不需要额外的努力。此外,当结构发生变化时(我发生了很多事情),JSON数据结构也会更新,我只需要考虑如何处理新数据。或者基本上维护代码变得相当轻松。这也使服务器端和客户端通信更容易,更灵活,但你真的应该尝试让自己理解我的意思。

所以基本上我的建议是使用某种Serializer将数据存储在JSON格式的全局变量中,这使得服务器端和客户端编程更容易,并且只需最少的工作量就可以更灵活。