基于 html tag/other 否 ASP 的选择性浏览器缓存(即甜甜圈)?
Selective browser caching (ie donut) based on html tag/other no ASP?
假设我不使用任何库或框架,只是普通的 HTML5、CSS3 和每个现代浏览器都提供给我的 ES6。
是否有类似于 ASP 的甜甜圈洞缓存的东西,我可以在其中指示客户端的浏览器不要缓存页面中的特定 html?
抱歉,如果这被认为是重复的,但我已经在这里和其他地方搜索过这个非常具体的问题,但没有任何结果。
假设我有一个生成随机 ID 的网络表单,用于验证表单提交。每次更改表单结构时都会更改此 ID。
已经访问过此页面的客户可能会使用较旧的缓存 ID 加载 Web 表单,这会在提交时触发验证错误。
我知道对于图像我可以通过在它们的 url 中添加随机查询字符串来做到这一点。
我更愿意告诉浏览器不要缓存这部分 html 或基于元素的 class 或 ID 或其他,这可能吗?
据我所知,ASP 中的 "donut hole caching" 指的是 server-side 缓存。服务器 re-uses,逐字记录,跨请求的甜甜圈的 "bread" 部分和每个请求的 re-generates "hole" 部分。
客户端(浏览器)没有这样的机制来区分"bread"和"hole"。它根据服务器发送的缓存 headers 在请求级别进行缓存。因此,如果 https://example.com/page-with-form
的缓存 time-to-live 为十分钟,但表单的随机 ID 仅在一分钟内有效,则用户很可能会遇到错误,即使他们在九分钟刷新页面并且59 秒。
请记住,如果用户离开一个小时 return 并在表单上点击 "submit",也可能会遇到错误。
一种方法是通过在服务器响应上设置 no-cache headers 来禁用 client-side 缓存。
另一种方法是 允许 缓存 HTML,但偶尔使用 JS re-populate 随机 ID(我不了解您应用的安全结构,所以我不知道这是否违背了随机 ID 的目的)。
假设我不使用任何库或框架,只是普通的 HTML5、CSS3 和每个现代浏览器都提供给我的 ES6。
是否有类似于 ASP 的甜甜圈洞缓存的东西,我可以在其中指示客户端的浏览器不要缓存页面中的特定 html?
抱歉,如果这被认为是重复的,但我已经在这里和其他地方搜索过这个非常具体的问题,但没有任何结果。
假设我有一个生成随机 ID 的网络表单,用于验证表单提交。每次更改表单结构时都会更改此 ID。
已经访问过此页面的客户可能会使用较旧的缓存 ID 加载 Web 表单,这会在提交时触发验证错误。
我知道对于图像我可以通过在它们的 url 中添加随机查询字符串来做到这一点。
我更愿意告诉浏览器不要缓存这部分 html 或基于元素的 class 或 ID 或其他,这可能吗?
据我所知,ASP 中的 "donut hole caching" 指的是 server-side 缓存。服务器 re-uses,逐字记录,跨请求的甜甜圈的 "bread" 部分和每个请求的 re-generates "hole" 部分。
客户端(浏览器)没有这样的机制来区分"bread"和"hole"。它根据服务器发送的缓存 headers 在请求级别进行缓存。因此,如果 https://example.com/page-with-form
的缓存 time-to-live 为十分钟,但表单的随机 ID 仅在一分钟内有效,则用户很可能会遇到错误,即使他们在九分钟刷新页面并且59 秒。
请记住,如果用户离开一个小时 return 并在表单上点击 "submit",也可能会遇到错误。
一种方法是通过在服务器响应上设置 no-cache headers 来禁用 client-side 缓存。
另一种方法是 允许 缓存 HTML,但偶尔使用 JS re-populate 随机 ID(我不了解您应用的安全结构,所以我不知道这是否违背了随机 ID 的目的)。