Pac*_*ier 5 html css noscript web
我有一个看起来像这样的页面:
<!doctype html>
<head></head>
<body>
<div>Content 1000 chars</div>
<div>Content 1000 chars</div>
<div>Content 1000 chars</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当客户端下载页面时,基本上他正在下载3100个字符.如果他再次访问该页面并且第一个div的内容发生变化,他将不得不再次重新下载整个页面(3100个字符).
现在基本上我想知道我们能够像我们对图像一样缓存HTML片段吗?
所以我在想是否有某处可以获得这种效果:
<!doctype html>
<head></head>
<body>
<div src="page1.html"></div>
<div src="page2.html"></div>
<div src="page3.html"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
因此,如果我要更改page1.html的内容,浏览器将能够知道自上次访问以来仅更改了page1.html,并下载了1000个字符而不是整个页面(3100)字符.基本上这种行为与图像现在发生的情况相同:
<!doctype html>
<head></head>
<body>
<img src="img1.gif">
<img src="img2.gif">
<img src="img3.gif">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
因此,更改img1.gif将仅调用浏览器重新下载img1.gif(假设所有其他文件尚未编辑)
要清楚,我不是在寻找一个AJAX解决方案.我需要一个无需javascript的解决方案(与上述所有示例一样).我也不是特别赞成帧解决方案,但是如果没有其他替代方案/怪癖/ 黑客,我会接受这个答案
您考虑过 IFrame 吗?
然而,我认为这是一个微观优化,它不会有任何优势(除了在服务器应用程序内部缓存,这完全是另一种蠕虫)。
(或者您在这里谈论的字符数超过3000 个。)
编辑:还有另一种解决方案,但在不使用 AJAX 的情况下,任何浏览器都不支持HTML 文档,并且仅在某些服务器场景中支持:HTTP Range requests。您可以使用附加标头告诉服务器仅返回文档的特定范围:
GET /large-document.html HTTP/1.1
Accept-Range: bytes
Range: bytes=0-500
Run Code Online (Sandbox Code Playgroud)
响应将仅包含前 500 个字节。例如,该技术用于恢复中止的下载。
但正如我所说,这对您的情况没有帮助。其一,如果没有 AJAX(或在下载管理器之外),没有浏览器支持此功能。对于第二个,客户端不知道要请求哪个范围,以及将其放在已获取的文档中的何处以替换旧部分。
如果您确实需要支持低至 IE3 和 Netscape 2 的旧版浏览器,甚至是旧版 Lynx 版本等旧版文本浏览器,请使用经典<frameset>的<iframe>. 从 Mosaic 的旧时代开始,它基本上就得到了所有支持,并且当时是专门为此任务而设计的。(因此,当您寻求支持的浏览器问世时,它是当时选择的工具。)