2010-09-29 134 views
3

在我的一些页面中,我有“模板”。例如,我可能有一个表,并且我为表中的每一行都有一个“模板”缓存客户端上的html文件

<div class="wholeRow"><div class="lefCol"><!-- some stuff will go here --></div>... 

然后我用JS填写这张表。这有点愚蠢,但用户每次访问页面时都必须加载这个模板 - 我应该可以缓存它。

我不知道如何去缓存它虽然;我能想到的唯一的东西就是把它放在一个静态的JavaScript文件中,并用document.write来包装它,但这看起来很好,很愚蠢。有没有人有其他想法?

+0

看我的解决方案:http://stackoverflow.com/questions/2326943/when-do-items-in-html5-local-storage-expire/17632458#17632458 – 2013-07-13 17:38:08

回答

1

如果它是一个在页面加载之间不会动态改变的内容,它应该在服务器上生成,而不是由Javascript生成。如果它是一个动态内容,缓存它是没有意义的。

我会先考虑你的应用程序设计,然后再考虑高级缓存。

缓存客户端上的东西主要由浏览器处理(现在它们处理得相当好)。如果你想用的Javascript计算缓存结果,您有两个存储可能性:

  1. 饼干
  2. HTML5 API,用于存储JS数据

他们都不是完美的这个目的,没有任何的他们被设计为缓存。现在我会去Cookies,因为这些广泛支持。加载页面后,只需检查cookie是否存在,如果存在,只显示其内容。否则使用JS生成它。

请注意 - 不要使用<div>表格数据。 <表>元素是为此设计的。

+0

这似乎怪我;人们真的把HTML数据放入Cookie中吗?这似乎很糟糕。我基本上必须手动控制缓存,而不是让浏览器去做。另外:模板是静态的,但是放在模板中的不是。我没有把“结果计算由JavaScript”任何地方,我只是存储一些HTML(这是由服务器生成)。 – Xodarap 2010-09-29 16:45:55

+0

然后你不必做任何事情。浏览器将缓存来自服务器的任何内容(通常)。我认为“那我用JS填写这张表。”意味着您使用某种JS计算来填充表中的数据,并希望使用填充的数据来缓存表。 – 2010-09-29 17:20:23

+0

我不认为我很清楚。整个页面是动态的 - 它不能被缓存。然而,页面的部分*可以被缓存。如何缓存此页面的某些部分?如果这些部分是js或css或图像,我可以将它们放在具有缓存控制标题的单独文件中。我怎样才能做到这一点与HTML? – Xodarap 2010-09-29 17:36:43