【问题标题】:src attribute ignores the embeded link if it remains the samesrc 属性忽略嵌入的链接,如果它保持不变
【发布时间】:2017-04-21 15:31:57
【问题描述】:

我正在通过如下控制器操作加载图像:

  <img src="@Url.Action("EditImage", "Image", new {id = Model.ShopId, isView = true})" alt="@Model.ImageName"/>

在 chrome 中,这个动作只会被调用一次,然后如果我不重新加载页面,浏览器会假设链接保持不变并且不会再次调用它。

我的问题是链接将始终保持不变,因为它将 shopId 参数传递给函数,并且由于商店在我更改它时只有一个图像,所以我仍然会调用相同的链接来获取新图像。

【问题讨论】:

  • 请具体一点,不清楚你的问题是什么。您生成一个链接,如果您不重新加载页面,显然它不会改变,这就是浏览器的工作方式。

标签: c# html asp.net-mvc google-chrome


【解决方案1】:

src 属性中添加一个带有日期时间值的查询字符串将有效地防止浏览器缓存图像。

有兴趣查看模型和/或控制器,看看src 计算是否更清晰,计算图像路径服务器端是否比动态解释更有效。

【讨论】:

  • 我自己也认为,我正在寻找的可能是一些更优雅的解决方案。
  • 您正在与浏览器的理想缓存作斗争。您的选择是更改 URL 或在图像上发送 no-cache 指令。我建议不要使用后者,这样最终用户就不必每次都加载图像
  • 我明白了,图像操作没有显示在网络流量部分至少标记为缓存的原因是什么?
  • 可能与 Chrome 事件如何触发有关图像仍在网络缓存中或如果它在磁盘缓存中,后者将重做请求和 304
【解决方案2】:

你可以用

装饰你的动作方法或控制器
[OutputCache(NoStore = true, Duration = 0)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 2012-01-05
    • 2016-02-08
    相关资源
    最近更新 更多