Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Web上缓存。如何在浏览器中处理地址初始访问?_Javascript_Jquery_Html_Web - Fatal编程技术网

Javascript 在Web上缓存。如何在浏览器中处理地址初始访问?

Javascript 在Web上缓存。如何在浏览器中处理地址初始访问?,javascript,jquery,html,web,Javascript,Jquery,Html,Web,当访客来访时 有没有办法让浏览器使用以前缓存的响应?还是它总是向服务器发出请求 我猜会出现对服务器的请求,但是可以用空字符串响应,并让浏览器自动为index.html使用缓存的响应?还是你总是要提供完整的答案 问题是基于JS的应用程序的初始index.html响应应该包含多少内容,或者index.html响应是否应该对html片段发出第二次请求等等 // Example: Pseudo code <html> ... <script> if

当访客来访时

有没有办法让浏览器使用以前缓存的响应?还是它总是向服务器发出请求

我猜会出现对服务器的请求,但是可以用空字符串响应,并让浏览器自动为index.html使用缓存的响应?还是你总是要提供完整的答案

问题是基于JS的应用程序的初始index.html响应应该包含多少内容,或者index.html响应是否应该对html片段发出第二次请求等等

// 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中。问题是,您必须管理自己的缓存失效等