【发布时间】:2017-02-11 04:06:09
【问题描述】:
我想在我的 JSP 页面上显示一个格式化的日期,所以我使用:
<fmt:formatDate pattern="MMM d" value="${myEvent.date}"/>
完美运行。它在页面上显示为
Nov 28
但是,当它被谷歌缓存时,发生了一件奇怪的事情——缓存页面上的日期显示如下:
2016-11-28 20:00:00.0
谁能解释一下?格式化不应该发生在服务器上吗?我的应用程序服务器 (Tomcat) 不是仅将 HTML 发送到页面吗? Google 一开始怎么知道这实际上是 Java 日期?
澄清一下,为了获得页面的缓存版本,我在 Google 上执行搜索,结果中显示我的页面,然后单击向下箭头并获得我页面的缓存版本。
【问题讨论】:
-
您是对的:Google 应该只能访问由 JSP/Servlet 输出的 HTML 标记 - 没有其他方法。所以它引出了一个问题:谷歌缓存的价值是从哪里来的?您应该查看源代码,并查看缓存页面中的标记真实情况,与实时版本进行比较。也不排除明显的可能性:页面的缓存版本可能在您实施格式化之前创建,或这只是 Google 缓存代码中的一个错误(Google 仍然由人工操作他们确实会犯错误)。
-
比较谷歌的缓存版本和waybackmachine.org的版本
-
恐怕你很难得到真正的答案,只有随机猜测,除非有人为谷歌工作并了解他们的内部算法,准备冒险放弃他的工作只是为了回答你的问题可能会有所帮助。我的随机猜测是,负责存档页面的机器人足够聪明,可以识别不完整的日期并将其替换为完整的日期,以便在我们阅读时保持页面信息的一致性。事实上,假设您在 2 年内访问了您的缓存页面,阅读 11 月 28 日将是错误信息,而 2016-11-28 20:00:00.0 将是正确的。
-
例如,数据标注器可以理解日期,那么为什么不负责归档页面的机器人support.google.com/webmasters/answer/2856609?hl=en
-
显示更多 HTML 和 jsp 代码,以便了解您在哪些标签中准确填写了日期。提供正确显示日期的代码和不正确显示日期的代码