【发布时间】:2019-03-19 15:07:07
【问题描述】:
我有一个模板结构,其中有一个 HTML 文件,其中加载了相关的 HTML 和 JS 文件(使用 AJAX)。
部分根据用户的活动加载(页面从不重新加载哪种有利于用户体验)。 即
用户点击一个菜单说“个人资料”,这会导致:
jQuery.load 方法用于加载文件“/some/path/profile.html”。
jQuery.getScript在.load()回调中使用,包括像“some/path/profile.js”这样的js文件,profile js有个人资料页面的事件处理程序以及相关的业务逻辑。
这发生在应用程序的每个菜单项/部分,例如“配置文件”、“文件”、“仪表板”等。
它工作得很快,但我不确定这是否是执行此操作的最佳方式。
如果用户随后两次单击“个人资料”按钮,浏览器会 先清理之前加载的资源(profile.html,profile.js) 重新加载它?
当用户在访问“个人资料”后访问新部分时说“仪表板”,会 浏览器在加载之前再次清除 Profile 的资源 仪表板?
如果不是这样的话,这是否会导致浏览器出现一些与内存相关的问题?我对此进行了搜索,但没有看到任何相关情况。
P.S:在这种结构中,通常一些 HTML 部分存储在 JS 变量中以供进一步使用。我在 SO 的某处读到这样做是一种不好的做法,但我无法找到有关它的详细信息。如果开发人员精通并且将 HTML 存储在 JS 变量中,我认为这不应该是一个问题。
【问题讨论】:
-
这可能看起来很明显,但如果不缓存,您不会获得缓存的好处,如果这些事情发生了很大变化,但如果它们随着时间的推移保持不变,那么就不会那么大了。另一种方法是在文件更改以模拟文件版本时更改参数,但不要在每次加载项目时使用新的时间戳。
-
请注意,“业务逻辑”都应该在后端服务中进行验证,而“行为逻辑”是网站的外观和感觉,除了改善体验之外不需要验证,例如(检查在提交 X) 之前,还要检查后端以确保例如有效值。
-
@MarkSchultheiss 我认为不重新加载页面会更好地利用浏览器缓存。我添加了一张图片以进行进一步描述,中心内容通过 AJAX 更新,其中主要有表格、表单等,但没有许多图像或任何东西。中心部分 HTML 在更新之前存储在一个 JS 变量中,一旦我读到这不是一个好方法,但不知道为什么。
标签: javascript jquery html ajax content-script