我正在访问我的网站上的链接,每次访问时都会提供一个新图像.
我遇到的问题是,如果我尝试在后台加载图像然后更新页面上的图像,图像不会改变 - 虽然它在我重新加载页面时更新.
var newImage = new Image();
newImage.src = "http://localhost/image.jpg";
function updateImage()
{
if(newImage.complete) {
document.getElementById("theText").src = newImage.src;
newImage = new Image();
number++;
newImage.src = "http://localhost/image/id/image.jpg?time=" + new Date();
}
setTimeout(updateImage, 1000);
}
Run Code Online (Sandbox Code Playgroud)
FireFox看到它们的标题:
HTTP/1.x 200 OK
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: image/jpeg
Expires: Fri, 30 Oct 1998 14:19:41 GMT
Server: Microsoft-HTTPAPI/1.0
Date: Thu, 02 Jul 2009 23:06:04 GMT
Run Code Online (Sandbox Code Playgroud)
我需要在页面上强制刷新该图像.有任何想法吗?
有没有办法可以在我的页面上放置一些代码,这样当有人访问某个站点时,它会清除浏览器缓存,以便他们可以查看更改?
使用的语言:ASP.NET,VB.NET,当然还有HTML,CSS和jQuery.
我使用PHP lib生成一些图像.
有时浏览器不会加载新生成的文件.
如何为我动态创建的图像禁用缓存?
注意:随着时间的推移,我必须为创建的图像使用相同的名称.
我有一个问题,用户报告他们的图像没有上传,旧图像仍在那里.仔细观察后,新图像就在那里,它们与旧图像的名称相同.我在上传时做的是我为了SEO目的重命名图像.当他们删除图像时,旧索引变为可用并被重用.因此它具有相同的图像名称.
有没有办法(我想可能有一个元标记)告诉浏览器不使用它的cahce?
更好的答案是将图像重命名为全新的.我将继续努力,但同时我在处理更大的问题时是快速的解决方案.
我知道有很多方法可以防止图像缓存(例如通过META标签),以及一些很好的技巧来确保每个页面加载时显示当前版本的图像(例如image.jpg?x = timestamp ),有没有办法在浏览器缓存中实际清除或替换图像,以便上述两种方法都不是必需的?
例如,假设页面上有100个图像,这些图像被命名为"01.jpg","02.jpg","03.jpg"等.如果图像"42.jpg"被替换,则是有没有办法在缓存中替换它,以便"42.jpg"将在连续页面加载时自动显示新图像?我不能使用META标记方法,因为我需要永久性地将ISN"T替换为保持缓存,并且我不能使用timestamp方法,因为我不希望每次页面都重新加载所有图像负载.
我绞尽脑汁在互联网上寻找一种方法(最好是通过javascript),但没有运气.有什么建议?
我正在编写一个小应用程序,它提供来自本地计算机的图像,因此它们可以作为http:// localhost:12345/something/something(返回jpeg)进行访问.
如何强制浏览器缓存它,因此只有一个请求将被发送到服务器.这个标题是否足够
HTTP/1.1 200 OK
Cache-Control: public, max-age=99936000
Content-Length: 123456
Content-Type: image/jpeg
Run Code Online (Sandbox Code Playgroud)
这似乎与Firefox 3.x一起使用,但是对于其他浏览器来说它是否足够全球?
我有一些非常基本的jQuery代码:
...
$(this).find('img').load(function(){
loadedImages++;
if(loadedImages == $this.find('img').length){
...
Run Code Online (Sandbox Code Playgroud)
然而,那不是持续发射.如果我进行硬刷新或关闭我的浏览器,它会触发,但是正常刷新,或者只是在不擦除缓存的情况下两次点击相同的URL会使得.load()
从不激活.
有想法该怎么解决这个吗?
我有一个图像(img.png
),其内容在组合框更改后更改.
问题是当我更改页面上的组合框时,图像的内容不会改变.
我尝试使用这样的JavaScript:
function SwitchPic(pic) {
pic.src = "img.png";
}
Run Code Online (Sandbox Code Playgroud)
而img
标签是:
<img src='img.png' id='img1' name='img1'>
Run Code Online (Sandbox Code Playgroud)
和组合框标签是:
<select name="users" onchange="show(this.value);SwitchPic(img1);">
<option value="">Select a Number:</option>
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
Run Code Online (Sandbox Code Playgroud)
它是我第一次更改选项时工作,但是当我重新更改选项时,它会保留图像而不更改它.
我怎么解决这个问题?
在我目前的项目中,我注意到IE使用了相当多的内存.花了一些时间调查我发现图像没有从内存中删除,但我的网站非常有用地使用图像.
最后,我创建了一个简单的测试,动态加载图像,然后使用jQuery清除它
我的测试js:
$(document).ready(function () {
$('#appendImages').click(append);
$('#removeImages').click(remove);
});
function append() {
$.post("http://localhost/TestService/GetImages", { key: $('#key').val()}, function (data) {
$.each(data.Data.items, function (i, v) {
$('#imagesContainer').append('<img src="' + v.imageUrl + '" />');
}); ;
});
}
function remove() {
$('#imagesContainer').empty();
}
Run Code Online (Sandbox Code Playgroud)
测试HTML:
<input id="key" type="text" value="jeans" >
<div id="reset">Reset</div>
<div id="repeatableReset">Repeatable Reset</div>
<div id="stop">Stop</div>
<br />
<br />
<br />
<br />
<div id="appendImages">append</div>
<div id="removeImages">remove</div>
<div id="imagesContainer"></div>
<html>
</html>
Run Code Online (Sandbox Code Playgroud)
在附加新图像时,IE内存正在增加.但删除所有加载的图像后,内存不会被清除.例如,在页面加载之后,IE进程使用20MB,在附加图像之后它使用35MB,清除后 - 30MB.
我已经使用sIEve工具找到任何leand但它显示没有泄漏.IE是否以某种方式缓存图像?IE中是否存在处理动态创建的图像元素的问题?
更新 在Firefox内存级别保持不变,但在IE中它正在增加.
我的网站被设计成一个有趣的图片网站,当用户点击随机按钮时,同一页面上的PHP代码生成一个新的随机图片,这就是它应该如何工作.然而,我必须按F5按钮才能获得新图像.
我正在阅读另一个问题,即人们使用获取日期并在链接末尾生成时间查询字符串以避免浏览器缓存,但是我无法弄明白我的生活.
我对PHP不是很好所以请说好像我只知道基本的网页结构.谢谢!
我有一个烧瓶视图功能如下:
@app.route('/myfunc', methods = ['POST', 'GET'])
def myfunc():
var = request.form["samplename"]
selected_ecg=ecg.loc[ecg['Patient ID'].isin([var])]
selected_ecg = selected_ecg.drop('Patient ID', 1)
arr = np.array(selected_ecg)
y = arr.T
x=np.array(range(1,189))
plot.plot(x,y)
#Remove the old file
os.remove("static\graph.png")
#Now save the new image file
plot.savefig("static\graph.png")
return render_template("outputs.html")
Run Code Online (Sandbox Code Playgroud)
Outputs.html:
<html>
<head>
</head>
<body>
<h1>Output page</h1>
<img src="static/graph.png" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我使用flask视图功能通过outputs.html文件显示图像.这里的问题是,服务的静态图像文件每次都会根据用户输入而不断变化.换句话说,我会根据用户选择的输入覆盖图像文件.
但问题是没有提供更改的图像文件.用于第一次渲染的旧图像文件仅针对用户的每个新输入显示.
我已经提到了有关在烧瓶中提供动态内容的旧帖子.但它们都没有用.
我正在尝试确定将图像的最后修改日期存储在MySQL数据库中还是使用PHP函数filemtime更好。
就我而言,所有网站信息都存储在数据库(cms)中,因此总会有一个查询来提取图像路径,等等。问题是出于缓存的目的,我需要让HTML输出如下所示<img src="/img/photo.jpg?v20190613" />
。根据我在php.net网站上阅读的内容,此功能已被缓存。那么,它会使用较少的资源向存储上次更新时间戳的数据库表中添加字段还是每次使用此功能吗?两种方式都有优势吗?我正在寻找可以提供最佳性能的产品。