GET request returns old version of an image in Flask












0















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.










share|improve this question























  • 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





    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
















0















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.










share|improve this question























  • 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





    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














0












0








0








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.










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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, 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





    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



















  • 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





    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

















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












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
});


}
});














draft saved

draft discarded


















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
















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

How to fix TextFormField cause rebuild widget in Flutter

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith