访问在javascript文件上设置但不在HTML

时间:2015-05-25 13:49:28

标签: javascript ajax cookies

我有一个需要一些外部信息才能使用的脚本。它使用Ajax请求获取此信息。到目前为止一切都很好。

但是,脚本从一开始就需要一些数据。所以我一直在思考一些选项,以便在页面加载时为它提供初始数据:

  1. 最简单:让它立即执行数据的Ajax请求。除此之外,还有额外的延迟和更多的请求。
  2. 丑陋:在HTML渲染时添加一个提供初始数据的小脚本片段
  3. 错误的缓存属性:动态创建整个JS文件,然后添加数据。
  4. 不可能:有标题的东西......但不幸的是,似乎我们无法访问它们(参见例如this question)。执行额外的Ajax请求在这里没有用,因为在这种情况下我们也可以使用选项#1。
  5. 饼干的东西......
  6. 尚未尝试:创建一个动态的" initial-data.js'脚本的唯一目的是加载初始数据。这至少只会在需要时发送数据,但它需要我脚本的所有用户都包含2个脚本文件而不是1个....此外它还会引起额外的请求......
  7. 我正在尝试使用cookie来传输初始数据的第四个选项,但到目前为止还没有取得任何成功。我想做什么:

    • 当浏览器请求.js文件时,让服务器在响应中添加一个Set-Cookie标头,其中包含初始数据。
    • 在JS文件中,读出cookie。

    它不起作用。似乎我需要在.html的响应上设置cookie而不是浏览器的.js以使其可用于脚本...这太糟糕了,因为它会涉及添加Set-Cookie头到每个页面,即使它只是那个特定的JS需要。

    我实际上对我认为找到的解决方案非常满意,因为它让我将初始数据连同脚本请求一起发送到那些实际使用脚本的页面......太糟糕了!

    有没有办法做我尝试使用Cookie,标题或类似机制做的事情?

    你们对这种情况有什么建议吗?

    背景: 我正在尝试编写一个半离线应用程序。半离线,因为它应该在离线时继续工作(除了一些只需要连接的功能),但预计会有定期连接的时段。因此,我尽可能使用本地存储并与服务器同步。

    为了能够让客户端在离线时生成新项目,我将包括一个ID生成器,由服务器分发ID块,在生成ID时使用它们。我试图在cookie中发送到脚本的数据是ID块的初始列表和一些设置,如下所示:

    /suid/suid.json:3:3:dxb,dyb,dzb
           ^        ^ ^      ^   
          url     min max   blocks
    

    其中:

    url = path to JSON for subsequent Ajax requests
    min = minimum amount of ID blocks to keep in local storage
    max = maximum amount of ID blocks to keep in local storage
    blocks = comma separated list of ID blocks
    

    ID块被编码为Base32字符串的排序。我使用自定义格式架构,因为我希望53位ID在文本格式中尽可能短,同时仍然易于人类可读,可写和URL安全。

0 个答案:

没有答案