缓存HTML输出

时间:2011-07-26 14:46:32

标签: javascript html css caching

我很确定我已经知道答案,但我很想知道是否还有其他想法。我们正在开发一个网站,其中包括一个重大的重新设计和大型菜单。重新设计中我最重要的事情之一就是尽可能减少页面下载时间。我的所有图片,CSS和JavaScript都被缓存,这很好。但是,我试图解决的部分是菜单的html编码,如果有办法在合理范围内本地缓存。

作为旁注,我喜欢尽可能做纯CSS(对于SEO),因此包括直接将大型菜单输出到HTML页面。但与此同时,我知道如果页面在顶部下载html内容需要几秒钟,那么,我们可能也会在那里运行一些客户。也许最好的方法是让JavaScript输出菜单,但是你会碰到几个没有启用Javascript的客户。

现在页面的菜单大约是30K,我预计在重新设计时会加倍甚至更多。

你对这个问题有什么想法吗?您认为解决这个问题的最佳方式是什么?

谢谢!

JMAX

2 个答案:

答案 0 :(得分:2)

老实说,在这个时代,30K的元素并不算什么,高速连接是常见的,浏览器会根据需要有效地进行缓存。人们不会因为一两秒而离开。这是当你有Flash电影预加载或疯狂自动启动视频时,人们会匆忙烦恼。

我有一个类似的应用程序,菜单可能现在加倍...让我补充一点,这不是选择,而是我继承并且必须暂时维护的东西。菜单只是在无序列表中输出,然后我根据需要使用Superfish和CSS来进行样式设置。有一个初步的打击,但在那之后,缓存开始,我们很高兴。尽管它很疯狂,但负载并不高。然而,浏览它是一团糟。我强烈建议不要让你的用户混淆这么多选择,特别是在一个巨大的菜单上,这对于残疾人和老年用户来说可能是一个UI障碍。当你把它烧掉时,“Web 2.0运动”背后的整个基础(我讨厌这个术语)是为了最小化或掩盖复杂性。

如果您真的关心性能,请从开始加载的内容开始。通过组合文件限制您的Javascript,特别是那些倾向于堆叠的小Jquery文件。 HTTP请求会严重影响站点,尤其是因为它们最初会独占负载。同样,组合小CSS文件并通过online tool优化其余部分。为了减少图像负载,为图形创建精灵,这样你就可以加载一个文件而不是多个文件。 Here's a tut on Sprites和一个简单的谷歌搜索将为您提供数十个自动构建精灵和CSS的网站。从CDN加载任何东西,例如Jquery,Prototype等(希望每个站点只有一个框架,因为两个或更多是不必要的)

如果您仍然失控,请再次查看您的图片。您是否可以利用纯CSS或通过CSS重复图像来进一步减少负载?你有没有优化所有的图形?你能调整设计以利用这些技巧吗?

毕竟,如果您根本无法将菜单更改为更友好,请开始调查选项。但是,我怀疑你会在前几步中找到比在菜单上采取极端措施更好的收益。

答案 1 :(得分:1)

您可以为生成菜单的javascript代码文件设置HTTP缓存,也可以使用ajax从其他文件插入预生成的HTML菜单(同样在缓存中设置较长的过期日期)。

这些解决方案都需要通过javascript。我想不出除了IFRAME(yuck)之外从HTTP流量中删除菜单的另一种方法。

然而,对于普通的HTML来说,30k是巨大的 - 你真的需要这么庞大的导航结构吗?