javascript - 在 Web 上缓存。浏览器中如何处理地址首次访问?

标签 javascript jquery html web

当访客访问http://www.yourwebpage.com/

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

我猜测将会发生对服务器的请求,但是是否可以使用空字符串进行响应,并让浏览器自动使用缓存的响应来处理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>

问题归结为,如果我有十个 templates.html 文件,我想提供一次,它们是否应该包含在 index.html 响应中,或者是否应该发出另一个请求来将它们作为一个包获取。

显然,如果我发出第二个请求,如果设置了正确的 header ,浏览器将缓存该响应,但这会花费另一个请求,至少是第一次。

如果我将它们包含在index.html中,那么初始响应将会更大,但小于否则必要的两个请求,但是如何处理后续获取index.html的请求?

我从未访问过不加载某些内容的页面,尽管理论上如果正确设置了先前请求的正确缓存 header ,则应该可以将其视为离线应用程序,或者缓存现在适用于初始应用程序要求?仅适用于例如通过 ajax 或

最后的陈述是真的吗?

基本上,您可以通过仅使用缓存数据访问网页来执行 JavaScript,而实际上不需要发出任何请求,或者至少等待答案。

这可能吗?也许将整个index.html存储在localStorage中是一种方法,并且让index.html响应第二次仅使用一个脚本标记来响应,说明从localStorage加载。

编辑 1

我开始了解到,至少 Firefox 中有一种称为 list 的东西,它可以进行诸如首次安装应用程序之类的处理。 https://developer.mozilla.org/en-US/Apps/Build/Manifest

最佳答案

是的,您的网络服务器(和/或网络应用程序框架)应该使用缓存 header 向浏览器提供此类指令。缓存 header 包括 etag 和缓存控制。完整的示例和解释如下:https://www.mnot.net/cache_docs/#CACHE-CONTROL

但基本上,它们告诉浏览器何时考虑获取的内容已过时,何时实际发出请求。此外,如果服务器知道信息尚未更改,它将使用 HTTP 304 响应进行响应,这将导致客户端也使用缓存的副本。

你真的不需要使用 localstorage 选项,除非你希望你的 JS 绝对不会向服务器询问某些东西,除非它不在 localstorage 中。问题是您必须管理自己的缓存失效等。

关于javascript - 在 Web 上缓存。浏览器中如何处理地址首次访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24850840/

相关文章:

javascript - 使用 jQuery 处理多个复选框

javascript - Jquery focusout 通过每次鼠标点击运行多次

javascript - 当我的页面有 4 个以上的网格时,如何在页面中设置 4 个网格的样式?

javascript - 获取从一个页面到另一页面的点击 href 变量

javascript - 通过 ANGularJS Controller 从本地加载 JSON 文件并将其传递到 ANGularJS 自定义指令范围

javascript - 如何在 Telerik 编辑器上使用 knockoutjs 绑定(bind)?

javascript - 在 Opera 中获取以像素为单位的计算宽度

javascript - 罗盘针效应。图像保持固定并根据鼠标位置旋转

jquery - 很多回调函数

php - oscommerce了解子类目产品布局设计的div结构