Lan*_*ard 18 html javascript performance json templating
我在应用程序中找到了我需要开始缓存的东西,它让我思考......
现在的问题在于缓存和可维护性.
一方面我在想,如果一切都是使用Javascript HTML模板构建的,那么我的应用程序只提供HTML布局/ shell和一堆JSON.如果你看看Facebook和Twitter HTML源代码,那基本上就是他们正在做的事情(95%json/javascript,5%html).这将使我的应用程序只需要缓存JSON(页面,操作和/或记录).这意味着无论你是一些远程api开发人员访问JSON api还是海峡网络应用程序,你都会点击缓存.也就是说,我不需要2个缓存,一个用于JSON,一个用于HTML.这似乎将我的缓存存储减少了一半,并简化了一些事情.
另一方面,我正在思考,从我所看到/经历过的,生成静态HTML服务器端,以及缓存,似乎是更好的性能明智的跨浏览器; 你可以立即获得图形,而不必等待javascript渲染它.StackOverflow似乎用普通的HTML做所有事情,Google也是如此,你可以告诉......一切都出现了.请注意,如果在twitter.com上,该页面为.5-1秒是空白的,并且页面块中包含:javascript必须呈现json.这样的缺点是,对于任何动态(如无限滚动或网格),我必须创建javascript模板...所以现在我有服务器端HAML模板,客户端javascript模板,以及很多更多缓存.
我的问题是,对于如何处理这个问题有什么共识吗?您将两者混合在100%与另一种混合的经验中有什么好处和缺点?
更新:
导致我尚未决定使用100%javascript模板的原因有以下几个原因:
/#!/path,但还没有意识到这将如何影响其他搜索引擎以及旧浏览器如何处理它.好像它需要一个重要的设置.持久的私人数据存储.
您需要一台服务器来存储具有各种级别的公共/私人访问权限的数据.您还需要一台服务器来获取安全的闭源信息.您需要一台服务器来完成您不想在客户端上执行的繁重工作.复杂数据查询最好留在数据库引擎上.索引和搜索尚未针对javascript进行优化.
此外,你有旧浏览器的问题要慢得多.如果您没有运行FF4/Chrome或IE9,那么客户端和服务器上的数据操作和页面构建之间存在很大差异.
我本人将尝试构建一个完全使用MVC框架和模板的Web应用程序,但仍然使用服务器连接到安全和优化的数据库.
但一般来说,应用程序确实可以完全用javascript和使用模板构建.各种构造和javascript引擎已经足够先进,可以做到这一点.有足够的流行框架来做到这一点.Pure javascript Web应用程序不再是实验和原型.
哦,如果为此推荐框架,那么看看backbone.js.
安全
我们不要忘记,我们不相信客户.我们需要服务器端验证.JavaScript是解释的,动态的,可以在运行时进行操作.我们从不信任客户输入.
我曾经混合使用这两种方法但后来完全切换到客户端渲染,因为否则很难正确处理繁重的JavaScript.作为一个完整的解决方案,可以推荐JavaScriptMVC框架的方法.
它有一个名为EJS的视图呈现引擎,它可以将您的视图压缩为纯JavaScript,以用于应用程序的生成版本.这使得它非常快(所有HTML都预先加载了您的单个压缩JavaScript文件,因此只要您收到模型JSON数据就会呈现它).我个人没有注意到EJS渲染和传输纯HTML之间的性能差异.
然后,对于您的API,遵循REST原则,缓存是关键约束之一.因此,如果您的应用程序正确支持JSON数据的HTTP缓存并使用压缩的客户端模板,您甚至可能会看到性能改进.