GET request returns old version of an image in Flask
I'm trying to retrieve an image to a html page with GET request like this:
let img = new Image();
img.onload = function () { ... };
img.src = 'http://localhost:5000/img';
and it works great on the first time when you start the server, but when I try to do this again, it returns the previous image.
My Flask part of '/img' looks like this:
@app.route('/img')
def get_img():
return send_from_directory('./tmp', 'result.png')
I made sure that the result.png on my computer is being updated, and it is. When I try to manually access 'http://localhost:5000/img', it retrieves the old image, that I've already overwritten. When I refresh 'http://localhost:5000/img', it returns the updated image that's on my computer at the moment.
This probably has nothing to do with Flask, but instead with my lacking knowledge of how HTTP works, and I'd really appreciate if someone could help me out on this one. Thanks.
javascript python html http flask
add a comment |
I'm trying to retrieve an image to a html page with GET request like this:
let img = new Image();
img.onload = function () { ... };
img.src = 'http://localhost:5000/img';
and it works great on the first time when you start the server, but when I try to do this again, it returns the previous image.
My Flask part of '/img' looks like this:
@app.route('/img')
def get_img():
return send_from_directory('./tmp', 'result.png')
I made sure that the result.png on my computer is being updated, and it is. When I try to manually access 'http://localhost:5000/img', it retrieves the old image, that I've already overwritten. When I refresh 'http://localhost:5000/img', it returns the updated image that's on my computer at the moment.
This probably has nothing to do with Flask, but instead with my lacking knowledge of how HTTP works, and I'd really appreciate if someone could help me out on this one. Thanks.
javascript python html http flask
The reason is cache. The cache file of the image not updated yet. Thats why you are getting the old image. Actually the image is comming from cache (not comming from source). you can try with some get parameters like version or anything else, Likehttp://localhost:5000/img?v=1
... To get updated imagehttp://localhost:5000/img?v=2
. you can see this types of URL in many websites, Like./js/main.js?v=1.0
OR./css/main.css?v=1.0
.. They use this trick to bypass cache.
– Banujan Balendrakumar
Nov 22 '18 at 7:17
1
Another thing, You can tell your browser todo not cache http://localhost:5000/img only
. Then your browser will not cache the image.. Refer this : disable cache for specific page only - flask
– Banujan Balendrakumar
Nov 22 '18 at 7:18
Thanks! I tried to add those tags to the HTML file. So far it's not working, but I'll probably figure it out.
– nameisxi
Nov 22 '18 at 11:27
add a comment |
I'm trying to retrieve an image to a html page with GET request like this:
let img = new Image();
img.onload = function () { ... };
img.src = 'http://localhost:5000/img';
and it works great on the first time when you start the server, but when I try to do this again, it returns the previous image.
My Flask part of '/img' looks like this:
@app.route('/img')
def get_img():
return send_from_directory('./tmp', 'result.png')
I made sure that the result.png on my computer is being updated, and it is. When I try to manually access 'http://localhost:5000/img', it retrieves the old image, that I've already overwritten. When I refresh 'http://localhost:5000/img', it returns the updated image that's on my computer at the moment.
This probably has nothing to do with Flask, but instead with my lacking knowledge of how HTTP works, and I'd really appreciate if someone could help me out on this one. Thanks.
javascript python html http flask
I'm trying to retrieve an image to a html page with GET request like this:
let img = new Image();
img.onload = function () { ... };
img.src = 'http://localhost:5000/img';
and it works great on the first time when you start the server, but when I try to do this again, it returns the previous image.
My Flask part of '/img' looks like this:
@app.route('/img')
def get_img():
return send_from_directory('./tmp', 'result.png')
I made sure that the result.png on my computer is being updated, and it is. When I try to manually access 'http://localhost:5000/img', it retrieves the old image, that I've already overwritten. When I refresh 'http://localhost:5000/img', it returns the updated image that's on my computer at the moment.
This probably has nothing to do with Flask, but instead with my lacking knowledge of how HTTP works, and I'd really appreciate if someone could help me out on this one. Thanks.
javascript python html http flask
javascript python html http flask
asked Nov 22 '18 at 7:11


nameisxinameisxi
488
488
The reason is cache. The cache file of the image not updated yet. Thats why you are getting the old image. Actually the image is comming from cache (not comming from source). you can try with some get parameters like version or anything else, Likehttp://localhost:5000/img?v=1
... To get updated imagehttp://localhost:5000/img?v=2
. you can see this types of URL in many websites, Like./js/main.js?v=1.0
OR./css/main.css?v=1.0
.. They use this trick to bypass cache.
– Banujan Balendrakumar
Nov 22 '18 at 7:17
1
Another thing, You can tell your browser todo not cache http://localhost:5000/img only
. Then your browser will not cache the image.. Refer this : disable cache for specific page only - flask
– Banujan Balendrakumar
Nov 22 '18 at 7:18
Thanks! I tried to add those tags to the HTML file. So far it's not working, but I'll probably figure it out.
– nameisxi
Nov 22 '18 at 11:27
add a comment |
The reason is cache. The cache file of the image not updated yet. Thats why you are getting the old image. Actually the image is comming from cache (not comming from source). you can try with some get parameters like version or anything else, Likehttp://localhost:5000/img?v=1
... To get updated imagehttp://localhost:5000/img?v=2
. you can see this types of URL in many websites, Like./js/main.js?v=1.0
OR./css/main.css?v=1.0
.. They use this trick to bypass cache.
– Banujan Balendrakumar
Nov 22 '18 at 7:17
1
Another thing, You can tell your browser todo not cache http://localhost:5000/img only
. Then your browser will not cache the image.. Refer this : disable cache for specific page only - flask
– Banujan Balendrakumar
Nov 22 '18 at 7:18
Thanks! I tried to add those tags to the HTML file. So far it's not working, but I'll probably figure it out.
– nameisxi
Nov 22 '18 at 11:27
The reason is cache. The cache file of the image not updated yet. Thats why you are getting the old image. Actually the image is comming from cache (not comming from source). you can try with some get parameters like version or anything else, Like
http://localhost:5000/img?v=1
... To get updated image http://localhost:5000/img?v=2
. you can see this types of URL in many websites, Like ./js/main.js?v=1.0
OR ./css/main.css?v=1.0
.. They use this trick to bypass cache.– Banujan Balendrakumar
Nov 22 '18 at 7:17
The reason is cache. The cache file of the image not updated yet. Thats why you are getting the old image. Actually the image is comming from cache (not comming from source). you can try with some get parameters like version or anything else, Like
http://localhost:5000/img?v=1
... To get updated image http://localhost:5000/img?v=2
. you can see this types of URL in many websites, Like ./js/main.js?v=1.0
OR ./css/main.css?v=1.0
.. They use this trick to bypass cache.– Banujan Balendrakumar
Nov 22 '18 at 7:17
1
1
Another thing, You can tell your browser to
do not cache http://localhost:5000/img only
. Then your browser will not cache the image.. Refer this : disable cache for specific page only - flask– Banujan Balendrakumar
Nov 22 '18 at 7:18
Another thing, You can tell your browser to
do not cache http://localhost:5000/img only
. Then your browser will not cache the image.. Refer this : disable cache for specific page only - flask– Banujan Balendrakumar
Nov 22 '18 at 7:18
Thanks! I tried to add those tags to the HTML file. So far it's not working, but I'll probably figure it out.
– nameisxi
Nov 22 '18 at 11:27
Thanks! I tried to add those tags to the HTML file. So far it's not working, but I'll probably figure it out.
– nameisxi
Nov 22 '18 at 11:27
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53425586%2fget-request-returns-old-version-of-an-image-in-flask%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53425586%2fget-request-returns-old-version-of-an-image-in-flask%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
The reason is cache. The cache file of the image not updated yet. Thats why you are getting the old image. Actually the image is comming from cache (not comming from source). you can try with some get parameters like version or anything else, Like
http://localhost:5000/img?v=1
... To get updated imagehttp://localhost:5000/img?v=2
. you can see this types of URL in many websites, Like./js/main.js?v=1.0
OR./css/main.css?v=1.0
.. They use this trick to bypass cache.– Banujan Balendrakumar
Nov 22 '18 at 7:17
1
Another thing, You can tell your browser to
do not cache http://localhost:5000/img only
. Then your browser will not cache the image.. Refer this : disable cache for specific page only - flask– Banujan Balendrakumar
Nov 22 '18 at 7:18
Thanks! I tried to add those tags to the HTML file. So far it's not working, but I'll probably figure it out.
– nameisxi
Nov 22 '18 at 11:27