Javascript 在Web上缓存。如何在浏览器中处理地址初始访问?
当访客来访时 有没有办法让浏览器使用以前缓存的响应?还是它总是向服务器发出请求 我猜会出现对服务器的请求,但是可以用空字符串响应,并让浏览器自动为index.html使用缓存的响应?还是你总是要提供完整的答案 问题是基于JS的应用程序的初始index.html响应应该包含多少内容,或者index.html响应是否应该对html片段发出第二次请求等等Javascript 在Web上缓存。如何在浏览器中处理地址初始访问?,javascript,jquery,html,web,Javascript,Jquery,Html,Web,当访客来访时 有没有办法让浏览器使用以前缓存的响应?还是它总是向服务器发出请求 我猜会出现对服务器的请求,但是可以用空字符串响应,并让浏览器自动为index.html使用缓存的响应?还是你总是要提供完整的答案 问题是基于JS的应用程序的初始index.html响应应该包含多少内容,或者index.html响应是否应该对html片段发出第二次请求等等 // Example: Pseudo code <html> ... <script> if
// Example: Pseudo code
<html> ...
<script>
if ( !localStorage.index ) {
localStorage.index = loadFromServer( 'head.html' )
}
document.head.append(localStorage.index);
</script>
...</html>
//示例:伪代码
...
如果(!localStorage.index){
localStorage.index=loadFromServer('head.html')
}
document.head.append(localStorage.index);
...
问题归根结底是,如果我有十个templates.html文件,我想提供一次,那么它们应该包含在index.html响应中,还是应该发出另一个请求将它们作为一个包获取
显然,如果我发出第二个请求,如果设置了正确的头,浏览器将缓存该响应,但这将花费另一个请求,至少是第一次
如果我将它们包括在index.html中,那么最初的响应会更大,但会少于两个请求(否则是必要的),但是如何处理获取index.html的后续请求呢
我从未访问过不加载任何内容的页面,尽管从理论上讲,如果正确设置了前一个请求的正确缓存头,应该可以将其视为脱机应用程序,或者缓存现在是否适用于初始请求?仅适用于例如由ajax或
最后一句话是真的吗?
基本上,您可以通过只使用缓存数据访问网页来执行JavaScript,这实际上不需要发出任何请求,或者至少等待回答
这可能吗?也许将整个index.html存储在localStorage中是一种方法,第二次使用index.html响应时只使用一个脚本标记“load from localStorage”进行响应
编辑1
我逐渐了解到,至少Firefox有一种称为Manifest的东西,它可以允许像第一次安装应用程序这样的处理 是的,您的web服务器(和/或web应用程序框架)应该使用缓存头向浏览器提供此类指令。缓存头包括ETag和缓存控制。下面是一个完整的示例和说明:
基本上,那些告诉浏览器什么时候考虑获取的内容陈旧,何时实际提出请求。此外,如果服务器知道信息没有更改,它将使用HTTP 304响应进行响应,这将导致客户端也使用缓存副本
你真的不需要使用localstorage选项,除非你想让你的JS绝对不要向服务器索要东西,除非它不在localstorage中。问题是,您必须管理自己的缓存失效等