【问题标题】:Parameter on <img> tag<img> 标签上的参数
【发布时间】:2014-02-14 15:49:25
【问题描述】:

我发现有些网站使用图片src上的参数,比如?v=1390510765392

它是干什么用的?

<img src="image.jpg?v=1390510765392" />

thatAngularjs 示例中找到

【问题讨论】:

标签: html


【解决方案1】:

它允许图像的名称保持不变,但通过附加查询字符串,它可以防止浏览器使用图像的缓存版本。查询字符串本质上使 URL “新”,因此浏览器会继续并获取它认为是新资源的内容。

【讨论】:

  • 我认为将其称为“版本号”有点误导。
  • 只有一点点。但由于那部分并不重要,我已将其从答案中删除。
【解决方案2】:

它用于避免从浏览器缓存中提供图像(因为如果日期更改,URL会不同,并且对图像没有影响)

【讨论】:

    【解决方案3】:

    我能想到两种可能的用途……

    1. 如果每次加载页面时参数随机变化,那么这是防止浏览器缓存图像的常用手段。这将迫使浏览器始终请求新的(因为 URL 不同),以便用户始终拥有最新版本。

    2. 如果 image.jpg 实际上不是图像,而是代码驱动的服务器端资源,响应图像,那么 URL 参数将是传递标识符的一种方式到该资源以确定要下载哪些特定图像数据。 (例如,如果图像或至少对它们的引用存储在数据库中。)

    第一个很可能是这里发生的事情,尽管第二个肯定是可能的。

    【讨论】:

    • 我将技术 #1 与 CSS 背景图像一起使用,这些背景图像通常比 HTML 图像更积极地缓存(取决于浏览器)。
    【解决方案4】:

    另一种可能性是避免在图像更改时刷新 CDN 资源,从而防止用户看到图像的旧版本。

    【讨论】:

      【解决方案5】:

      元素的src 属性只是将GET 变量v 传递给image.jpg 端点处的服务器,其值为1390510765392。如果不检查服务器端代码,就不清楚开发人员为什么要这样做。我想到了几种可能性:

      • image.jpg 实际上可能是一个脚本(或由一个脚本解释),尽管有 .jpg 扩展名,在这种情况下,1390510765392 可能是用于检索特定图像的资源令牌。
      • 经常使用此类参数是简单地更改src 属性而不实际更改它所指向的内容,从而使图像的任何客户端(或中间)缓存无效并强制它重新加载,在这种情况下服务器本身可能会忽略 v

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-12
        • 2023-03-04
        • 1970-01-01
        • 2014-03-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多