关于使用javascript对web应用程序进行可能的优化的意见

关于使用javascript对web应用程序进行可能的优化的意见,javascript,optimization,Javascript,Optimization,我正在考虑以某种优化方式实现我的web应用程序,我想听听人们对这是否是个好主意的看法 详情如下: 对于我的大多数页面,我不想在服务器端确定用户是否登录,然后在此基础上修改我发送的页面,而是想向每个人发送相同的页面,这样我就可以使用反向缓存代理,对于大多数请求,甚至不必运行任何动态代码 登录用户需要完成的差异将在javascript中完成。进行更改所需的信息(用户名、用户id以及是否登录)将存储在可由javascript读取的cookie中 我不需要担心用户没有javascript,因为我的web

我正在考虑以某种优化方式实现我的web应用程序,我想听听人们对这是否是个好主意的看法

详情如下: 对于我的大多数页面,我不想在服务器端确定用户是否登录,然后在此基础上修改我发送的页面,而是想向每个人发送相同的页面,这样我就可以使用反向缓存代理,对于大多数请求,甚至不必运行任何动态代码

登录用户需要完成的差异将在javascript中完成。进行更改所需的信息(用户名、用户id以及是否登录)将存储在可由javascript读取的cookie中

我不需要担心用户没有javascript,因为我的web应用程序需要使用javascript

只有登录和注销用户都可以访问的最流行的页面才能执行此操作


你们觉得怎么样?赞成/反对?这是网站经常做的事情吗?

主要的缺点:如果你想确定一个浏览者单独使用JavaScript可以访问什么内容,毫无疑问,恶意用户只要看一眼您的源代码,就有可能访问高级内容。

主要缺点:如果您正在确定一个查看器可以单独使用JavaScript访问哪些内容,毫无疑问,恶意用户只要看一眼您的源代码,就有可能访问高级内容。

我不确定您真正在优化什么-您仍然需要获取用户数据,而且只有服务器拥有这些数据。您是否计划发送AJAX请求以请求数据并使用javascript格式化数据?您只节省了输出生成,这通常不是web应用程序中的瓶颈。更常见的是,数据库/IO(文件)/网络(HTTP请求)是瓶颈


这里的主要缺点是,通过将所有输出生成移动到javascript,您将大大增加下载大小并降低总体响应能力。因为没有一个大型网站使用这种方法,所以可以肯定它不会解决可伸缩性问题

我不确定您真正在优化什么-您无论如何都需要获取用户数据,而且只有服务器有这些数据。您是否计划发送AJAX请求以请求数据并使用javascript格式化数据?您只节省了输出生成,这通常不是web应用程序中的瓶颈。更常见的是,数据库/IO(文件)/网络(HTTP请求)是瓶颈


这里的主要缺点是,通过将所有输出生成移动到javascript,您将大大增加下载大小并降低总体响应能力。因为没有一个大型网站使用这种方法,所以可以肯定它不会解决可伸缩性问题

在应用程序中100%使用该模式会有点问题,但是,听起来您似乎在寻求使用一种称为“模型-视图-演示者”模式的方法:

请注意,在使用javascript时,您的代码是公开的,这意味着采取的任何安全措施都有可能通过浏览器进行黑客攻击。在服务器端添加保护,即可设置


另外,由于您将严重依赖javascript,我真的建议您使用,这是一种面向对象的javascript方法。通过这种方式,您可以使代码真正模块化,使用自定义和类事件处理混乱的实现,等等。

为100%的应用程序这样做会有点问题,但是,听起来您正在寻求使用一种称为模型视图演示器模式的东西:

请注意,在使用javascript时,您的代码是公开的,这意味着采取的任何安全措施都有可能通过浏览器进行黑客攻击。在服务器端添加保护,即可设置


另外,由于您将严重依赖javascript,我真的建议您使用,这是一种面向对象的javascript方法。通过这种方式,您可以使代码真正模块化,使用自定义和类事件等处理混乱的实现。

对于大多数页面,唯一的区别是顶部的内容会显示“您好,用户名”,并显示一些额外的链接,如用户帐户链接。唯一需要的数据是他们的用户名,它可以存储在cookie中。我不会通过AJAX调用获得所需的数据。对于那些高度基于用户的页面,比如用户帐户页面,我甚至不会使用这种方法。在这种情况下,您正在优化一些永远不会出现性能问题的内容。对于更具动态性的页面,您只是使我在GAE上运行的设置复杂化了。我可以使用
缓存控制:Public
发送的页面缓存在地理位置靠近用户的代理上。即使没有地理优势,在GAE上动态地提供请求,没有DB访问,也需要大约50毫秒,静态地提供大约2毫秒。在我看来,仅通过按需获取高级内容就可以轻松地保护高级内容,也就是说,如果您的站点有一个只对高级或更高级别的成员可用的照片页面,您可以向photos.php?userid=XX&passhash=XX&……发送一个AJAX调用,以便进行身份验证。是的,这会使事情复杂化,但可能值得一看。对于大多数页面,唯一的区别是顶部的一些内容说“嗨,用户名”,并显示一些额外的链接,如用户帐户链接。唯一需要的数据是他们的用户名,它可以存储在cookie中。我不会通过AJAX调用获得所需的数据。对于那些高度基于用户的页面,比如用户帐户页面,我甚至不会使用这种方法。在这种情况下,您正在优化一些永远不会出现性能问题的内容。对于更具动态性的页面,您只是使我在GAE上运行的设置复杂化了。