phoenix-framework - Phoenix 似乎正在阻止动态添加到 DOM 的标签的图像缓存
问题描述
在此示例中,每次按下 Add 按钮时,都会向服务器发送一个请求,即使缓存控制标头已设置为防止这种情况发生。
缓存测试.html.eex:
<button onclick="add()">Add</button>
<div id="avatars"></div>
<script>
function add() {
let i = document.createElement('img');
i.src = 'http://localhost:4000/avatars/64e91e0a-5015-4ef6-bd0d-915a84f9f7bc/image.jpg';
let d = document.getElementById('avatars');
d.appendChild(i);
}
</script>
avatar_controller.ex
...
def image(conn, %{"avatar_id" => id}) do
a = Avatars.get_avatar(id)
img = a.image_jpg
conn
|> Conn.put_resp_content_type("image/jpeg")
|> Conn.put_resp_header("cache-control", "max-age=3600, public")
|> Conn.send_resp(200, img)
end
...
当我将 cachetest.html.eex 复制到 index.html 并直接在浏览器中打开它时,缓存工作正常,并且不会向服务器发出其他请求。
如何让缓存在 Phoenix 中工作?
解决方案
推荐阅读
- c# - 当多个 SQL 键时,来自实体框架的循环 SQL 查询返回第一行
- java - 如何从枚举列表属性平面映射到枚举本身?
- sql - Oracle中的游标-传递参数后,选择不过滤结果行
- mysql - SQL:根据键的最小值选择产品
- java - 在java中的链表开头插入新节点后自动更新头节点
- c++ - 带有反向迭代器的 STL 算法函数不起作用
- c# - 如何更新 startup.cs 中的服务顶部使用 ITableEntity 和 TableClient 作为 dotnet3.1 中的服务
- android - 使用溢出菜单实现 App Bar 时禁用向上箭头
- java - 在 Android 上使用替代 DNS 库的最佳实践或示例?(例如 miniDNS / DNSJava)
- xamarin - 在 iOS 应用设置中删除 Xamarin 调试设置