JPG图片呈现为代码

时间:2017-01-25 22:04:42

标签: html html5 image browser-cache

我的图片缩略图链接到完整尺寸的图片。现在只有图像显示为某种代码。我多年来一直使用相同的HTML编辑器,所有页面都是相同的。只有这5页的组有缩略图。以此链接为例:

ÿØÿáExifII*ÿìDucky2ÿáyhttp://ns.adobe.com/xap/1.0/ ÿíHPhotoshop 3.08BIMZ%G8BIM%üá‰È·Éx/4b4XwëÿîAdobedÀÿÛ

我还发现,如果我得到这个代码,那么请转到历史记录,然后单击它本应弹出的照片的名称。我不知道如何解决这个问题。我已经用两个文件管理器多次上传了照片,还使用了其他照片软件。我的编辑器显示这些页面很好,但IE显示页面没有样式,所有浏览器都显示链接图像问题。 我知道这对你的专业人士没有多大意义,但这是我的商业网站,客户告诉我这个问题。经过8个小时的尝试解决这个问题,我希望你能提供帮助。

1 个答案:

答案 0 :(得分:1)

  

问题:

当IMG更改或被触摸时发生此问题(通过adobe,在您的情况下) AFTER 它已上传到服务器并且新(或修改的)IMG的名称保持不变。显示的图像无法刷新。即使数据库保存正确的图像,仍会显示旧图像。我已将其缩小到Web浏览器中 IMAGE IS CACHED 这一事实。如果我们点击 Firefox / Explorer / Safari 中的 RELOAD 按钮,一切都会被刷新,并且会出现正确的图像。

我在您的网站上验证了以下内容:

function is_cached(img_url){
    var imgEle = document.createElement("img");
    imgEle.src = img_url;
    return imgEle.complete || (imgEle.width+imgEle.height) > 0;
}

然后我调用了这个函数,它返回true或false,具体取决于是否缓存:

is_cached("photos/back_to_school_pr5_tn.jpg");

结果又回来了:

<- true 

记住:上传图片时,其文件名不会保存在数据库中。它被重命名为Image.jpg(在使用时简单地说出来)。使用新图像替换现有图像时,名称也不会更改。只是图像文件的内容发生了变化。

  

解决方案一 - 无需代码:

由于您不在编码业务中(正如您所声称的那样),您需要做的就是在adobe触及IMG之后重命名。 每当您在adobe中修改照片或上传新的​​IMG时,您都应该给它一个新名称,因为早期版本的IMG 仍然在CACHE中。

  

解决方案二 - 需要编码:

如果在上传原始图片后使用adobe触摸IMG是一件不变的事情,那么上面的解决方案可能会很麻烦,因此您可能想要尝试强制Web浏览器不缓存来自这个页面。

注意:此解决方案仅适用于未来。在您的情况下,IMG已经缓存。 此外,这仅适用于实际IMG 在您的HTML 中,但在您的网站上,该链接会将您带到实际的IMG。

  

解决方案三 - 需要编码:

上述解决方案的一个重要补充是,您永远不能强制浏览器执行任何操作。你所能做的就是提出友好的建议。它取决于浏览器和用户实际遵循这些建议。浏览器可以忽略这一点,或者用户可以覆盖默认值。 因此,最好的长期解决方案是使用数据库保存文件名。这样,如果图像被更改,IMG标签的src也将改变。 例如:

<img src="picture.jpg?1222259157.415" alt="">

其中&#34; 1222259157.415&#34;是服务器上的当前时间。 (注意:我使用python&#39; s time.time()来生成)