Javascript 使用.js文件缓存大型下拉列表

Javascript 使用.js文件缓存大型下拉列表,javascript,client-side,Javascript,Client Side,我希望将大型UI列表的内容缓存在客户端上,并根据标准或定期更新。然后,客户端代码就可以在本地填充下拉列表,避免页面下载时间过长 这些列表可能接近4k项,在不缓存的情况下动态筛选它们会导致多次较大的往返 我该怎么办?我的意思是,什么样的模式和策略适合这个?你可以考虑不要用jQuery和Ajax在本地存储数据来动态地更新下拉列表。需要的时候可以打电话,下载速度也会很快 只是一个想法 这可能会有帮助: 如果只是文本数据,您在web服务器上启用了压缩功能,并且项目少于100个,则可能不需要在客户端脚本中

我希望将大型UI列表的内容缓存在客户端上,并根据标准或定期更新。然后,客户端代码就可以在本地填充下拉列表,避免页面下载时间过长

这些列表可能接近4k项,在不缓存的情况下动态筛选它们会导致多次较大的往返


我该怎么办?我的意思是,什么样的模式和策略适合这个?

你可以考虑不要用jQuery和Ajax在本地存储数据来动态地更新下拉列表。需要的时候可以打电话,下载速度也会很快

只是一个想法

这可能会有帮助:


如果只是文本数据,您在web服务器上启用了压缩功能,并且项目少于100个,则可能不需要在客户端脚本中维护列表


通常最好将所有数据(列表项是数据)放在一个地方,这样就不必担心同步问题。

JSON的积极缓存可以解决这一问题,您只需对JS文件进行散列,并将其扔到其URL的末尾,以便在其更改时进行更新。一个修订可能如下所示:

/media/js/ac.js?1234ABCD
当文件更改时,散列也会更改

/media/js/ac.js?4321DCBA
这样,当客户端加载页面时,服务器端代码链接到散列URL,客户端将在下一次加载页面时得到304 Not MODIFED响应(假设您在服务器上启用了此功能)。如果使用此方法,则应将文件设置为永不过期,因为“过期”部分将由哈希处理,即当JS文件确实过期时,哈希将更改,客户端将不会得到304,而是200

js可能包含一个列表或其他iterable,您的自动完成代码可以将其解析为完成池,您可以像访问任何其他js变量一样访问它



但实际上,大多数项目都不需要这样做。使用诸如memcached服务器端和gzip压缩之类的东西将使文件变得更小,并且加载速度惊人。如果列表是巨大的(比如说数以千计的项目),你可能想考虑这个问题。

COMPRESS是一个很好的解决方案,它将跟踪更改,并让浏览器永远缓存JS直到发生更改,在这种情况下,它改变了项目的URL。


这就是我的建议。尽管这在很大程度上取决于列表的大小、更改的频率和使用频率(如果只在一个地方使用,服务器端自动完成可能更有意义)