我正在开发一个性能是一个非常重要的问题的网络项目。
编辑:
情况:
我想添加一些有关用户工作流程的详细信息:
- 用户访问我网站的欢迎页面
http://example.org/
。 - 他单击一个链接以访问该页面
http://example.org/mypage
onclick
- 已执行链接的处理程序。- 处理程序使用 XHR 加载数据。
- 处理程序
http://example.org/mypage
动态创建。 - 处理程序将 mypage 保存在本地使用
FileSystem API
atfilesystem:http://example.org/mypage
。编辑:(是filesystem:http://example.org/mypage
存储在FileSystem
客户端的本地资源) - 处理程序扩展历史并将使用的地址栏的URL
History API
从http://example.org/
(欢迎页面的 URL) 更改为http://example.org/mypage
(用户想要查看的页面)。 - 用户同时浏览另一个页面。
- 稍后,用户
http://example.org/mypage
直接在地址栏中键入。 - 浏览器显示/加载
filesystem:http://example.org/mypage
(这是本地存储的版本http://example.org/mypage
)而不是http://example.org/mypage
. 这意味着:浏览器不会创建新请求,它使用本地存储的http://example.org/mypage
.
如何让浏览器使用本地存储的页面版本而不是创建新请求?编辑: - 这就是我想在上面列表的#10 中做的事情。
编辑:
我的问题:
客户端已经在http://example.org/mypage
上面列表的 #2 到 #7 中创建/生成。我不需要在其他时间创建该页面。这就是为什么我不希望浏览器创建对http://example.org/mypage
.
这就是我想做的:
如果
filesystem:http://example.org/mypage
已经创建(如果用户已经访问过http://example.org/mypage
):使用
filesystem:http://example.org/mypage
而不是http://example.org/mypage
.除此以外:
发送请求
http://example.org/mypage
试图解决:
我不能使用清单文件的后备部分来执行以下操作:编辑:(除了原点)
回退: http ://example.org/mypage 文件系统:http://example.org/mypage
为了让浏览器使用存储在 FileSystem 中的本地版本,因为 Fallback 指令仅在用户离线时使用,否则将被忽略。编辑:但我想使用filesystem:http://example.org/mypage
而不是http://example.org/mypage
,即使用户在线。
- 我知道我可以在服务器生成的页面的响应标头中使用 Expire 字段,以便不创建新请求并使用缓存版本。
但是,如果我使用 JS 和 XHR 在客户端动态创建页面会怎样。编辑:(我在 中描述了这种情况The situation
)在客户端创建页面时,无法让客户端缓存该页面。这就是为什么我手动“缓存”页面FileSystem API
以将其存储在客户端。
为了提高性能,我尝试存储用户已经在本地访问过的任何页面。当用户再次访问一个页面时,我会向他展示该页面的旧的、本地存储的版本,并且我的脚本会创建一个 XHR 以查明该页面是否同时发生了变化。
但是我怎样才能让浏览器使用页面的本地版本呢?我可以使用 FileSystem API 在客户端本地保存生成的页面,我可以为生成的页面选择一个 URL,以使用 History API 将其显示在浏览器的位置栏上。
当用户现在访问另一个站点然后按下后退按钮时,我可以通过事件处理程序捕获 onPopState 事件。
并且该事件处理程序可以使用 FileSystem API 加载动态创建的文件。
但是,如果用户不使用后退按钮并且如果他将我使用 History API 注册的 URL 直接输入到位置栏中,我该怎么办?
然后浏览器不会使用本地存储的页面版本,浏览器会创建一个从服务器加载页面的请求。