【问题标题】:How do you get the current time from bigcartel's server?您如何从 bigcartel 的服务器获取当前时间?
【发布时间】:2015-06-10 20:26:08
【问题描述】:

有没有办法通过 Liquid 或 JavaScript 从 bigcartel 的服务器获取当前日期和时间?我正在我的商店中构建一些需要具有一致(非客户端)时间源的自定义功能。我只需要在每次页面加载时访问它一次。

这是我迄今为止尝试过的,基于another date-related bigcartel question

var currentDate = new Date({{ 'Today' | date: "%Y, %m, %d, %H, %M" }});
currentDate.setMonth(currentDate.getMonth() - 1);

这确实检索了今天的日期,但是当我刷新页面时它并没有持续更新。任何帮助将不胜感激。谢谢。

编辑:每次我编辑/保存并重新加载特定页面后,或者如果在第一个页面加载后经过一定时间(我没有做足够的测试来固定),Liquid 将获得一个新的日期/时间到底要花多少时间……可能是 2 或 3 小时……或更多?)。

此外,卡住的日期/时间对于每个产品页面都是唯一的。例如,如果我在 9:30 加载产品页面 A,在 9:32 加载产品页面 B,它们都会卡在相应的时间。两个页面都使用相同的代码呈现。

我以前从未使用过 Liquid,但我认为它应该在每次页面加载时从服务器检索新数据,类似于 PHP。我错了吗?

编辑 2:它变得更奇怪了。有时我会在给定产品页面的 URL 末尾附加一个查询字符串(例如?comicID=225)。但是,如果我更改查询字符串中的数字(或者甚至只是输入随机垃圾),它将检索一个新的卡住日期。因此,任何唯一的 URL 似乎都会在首次​​加载时获得唯一的卡住日期!

【问题讨论】:

  • 使用 Liquid 第一次查看后日期是否会更新?我认为 Liquid 会被编译成静态内容,因此不会在您每次刷新页面时重新评估。
  • 针对您的问题,我添加了更多信息。
  • 好的,此时我的想法是,Liquid 脚本每隔几个小时才会重新评估一次,或者所提供的内容会被您的浏览器缓存。在包含 bigcartel 日期的 HTTP 响应中是否指定了缓存标头?
  • @ErikGillespie,我不确定您的问题的答案,但您对查看 HTTP 响应标头的建议确实将我引向了一个有用的方向,所以谢谢!

标签: javascript date time liquid bigcartel


【解决方案1】:

我最终使用 JavaScript 制作了一个 XMLHttpRequest() 以从 HTTP 响应标头中获取当前时间,它似乎非常适合我的目的。这是我的工作代码:

var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var currentDate = new Date(req.getResponseHeader('date'));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-26
    • 2020-09-03
    • 1970-01-01
    • 2012-09-17
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多