Giter VIP home page Giter VIP logo

Comments (4)

alexanderwhatley avatar alexanderwhatley commented on July 24, 2024

@caseycrogers, you said in the comments for #54 that

As for your interest in adding low-level access to ETags-this seems reasonable to me. However, there is a caveat:

As-is, the ETag of a given value at one path in the database will be the same as the ETag of the same value at any other path.

Additionally, the ETag of values will not change with time. However, we do not document these two properties and do not guarantee that EITHER of them will remain true in the future. As such, we strongly discourage developers from fetching ETag values and then saving them to be used with later transactions at the same or different locations.

I don't think that this is a problem in the case of caching. If the data is the same, and hence the ETag is the same, then the cache is not stale. Also, it does not matter here if the ETag does not change as a function of time (I would certainly think that we would not want it to!)

from firebase-admin-python.

caseycrogers avatar caseycrogers commented on July 24, 2024

By change as a function time I mean that in the future we may choose to change our algorithm for producing ETags. We have no such plans at the moment but want to keep the option open for ourselves.

For caching it should be fine. Another note that you might find very helpful-while implementing the conditional requests logic I also implemented full support for the if-none-match header. However, since this feature was well out of scope of the project (allowing transactions in REST) we decided to keep the functionality but not document it. If you're doing any caching related stuff I highly recommend you use if-none-match.

It may be even worthwhile to add under-the-hood caching functionality with if-none-match to this library's default GET implementation. Preferably with a flag to turn it on or off.

Requests for non-stale data in the cache would incur one round trip (to verify the cached value) and minimal bandwidth. Stale data would require two round trips and slightly higher bandwidth than just a single standard GET.

from firebase-admin-python.

alexanderwhatley avatar alexanderwhatley commented on July 24, 2024

Just submitted a pull request for this. I think I'll hold off on the under-the-hood caching for now, as that seems like it'll be pretty complicated.

from firebase-admin-python.

hiranya911 avatar hiranya911 commented on July 24, 2024

I will resolve this, since get(etag=True) and set_if_unchanged() are already implemented and released. I also just sent out #73 to add the get_if_changed() method. Thanks @alexanderwhatley for all your hard work on getting this implemented, and thanks @caseycrogers for all the help.

from firebase-admin-python.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.