Hi Keerthika, What will happen in the following case?
- Cache Expiry < Max-age && and the cache entry is evicted? I believe in that case we have to fetch it from BE? thanks, Dimuthu On Wed, Jan 24, 2018 at 8:02 AM, Riyafa Abdul Hameed <[email protected]> wrote: > Hi, > > It was required to support native JSON in the cache mediator and hence we > had to use the JsonStreamBuilder. At the time of releasing it was mentioned > that APIM still uses JsonBuilder and I created an issue[1] to address this > if required. > > [1] https://github.com/wso2/product-ei/issues/916 > > Thanks, > Riyafa > > On Wed, Jan 24, 2018 at 3:40 AM, Dushan Abeyruwan <[email protected]> wrote: > >> Hi Kreethika, >> Yes, this is a long pending initiative that is required under the cache >> mediator. Anyway, I believe this may be more meaningful if you draw flow >> diagram + sequence diagram so, audience in this list able to fully >> understand the picture and the interaction of the middleman (i.e >> Integration layer) and that may be helpful when writing documentation >> >> Cheers, >> Dushan >> >> On Fri, Jan 12, 2018 at 1:37 AM, Keerthika Mahendralingam < >> [email protected]> wrote: >> >>> +1. Thanks Riyafa for the suggestion. >>> >>> >>> Thanks, >>> Keerthika. >>> >>> On Fri, Jan 12, 2018 at 3:05 PM, Riyafa Abdul Hameed <[email protected]> >>> wrote: >>> >>>> Hi Keerthika, >>>> >>>> We should have an option for disregarding the cache-control headers and >>>> the default value should be that the cache-control headers be disregarded. >>>> This is because the current cache mediator is written so that it is fully >>>> backward compatible with the older versions of the cache mediators. Any one >>>> using cache mediator in a synape configuration in an older version can use >>>> the same synapse configuration in the new version and can expect the same >>>> behavior. If he/she wants to make use of the new features he/she may do so >>>> by editing the synapse configurations. >>>> >>>> Thanks, >>>> Riyafa >>>> >>>> >>>> On Fri, Jan 12, 2018 at 12:24 PM, Keerthika Mahendralingam < >>>> [email protected]> wrote: >>>> >>>>> Thanks Isuru. Will check the existing functionality. >>>>> >>>>> @Vijitha, >>>>> +1 for providing the configuration option for omitting the >>>>> cache-control headers. >>>>> >>>>> @Sanjeewa >>>>> Will check with the latest cache mediator. >>>>> >>>>> Thanks, >>>>> Keerthika. >>>>> >>>>> On Fri, Jan 12, 2018 at 12:16 PM, Vijitha Ekanayake <[email protected] >>>>> > wrote: >>>>> >>>>>> Hi Sanjeewa, >>>>>> >>>>>> >>>>>> On Fri, Jan 12, 2018 at 12:01 PM, Sanjeewa Malalgoda < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> So i think we can add latest cache mediator dependency to API >>>>>>> Manager 2.2.0 branch and test this feature. >>>>>>> If there are any gaps in documents or implementation we will be able >>>>>>> to fix them and officially support this feature from 2.2.0 onward. >>>>>>> WDYT? >>>>>>> >>>>>> >>>>>> +1 for this approach. >>>>>> >>>>>>> >>>>>>> @Vijitha, Cache mediator can engage per API basis. So if someone do >>>>>>> not interested on caching they can simply remove cache mediator for that >>>>>>> particular mediation flow. >>>>>>> >>>>>> >>>>>> I intended to state just an option of disregarding the HTTP caching >>>>>> however not the response caching. Shouldn't it be valuable to have a >>>>>> design >>>>>> alternative to disregard the HTTP Caching yet not the default response >>>>>> caching? >>>>>> >>>>>> Thanks. >>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> Sanjeewa. >>>>>>> >>>>>>> On Fri, Jan 12, 2018 at 11:07 AM, Isuru Udana <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi Keerthika, >>>>>>>> >>>>>>>> ETag caching support is already implemented at the http transport >>>>>>>> level. >>>>>>>> This feature was introduced long time ago but still the >>>>>>>> documentation is not added to the wiki. >>>>>>>> Please refer to following jiras for more information. >>>>>>>> >>>>>>>> >>>>>>>> https://wso2.org/jira/browse/ESBJAVA-3504 >>>>>>>> >>>>>>>> https://wso2.org/jira/browse/DOCUMENTATION-1435 >>>>>>>> >>>>>>>> >>>>>>>> Thanks. >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Jan 12, 2018 at 10:51 AM, Keerthika Mahendralingam < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> Hi Shazni, >>>>>>>>> >>>>>>>>> Please find the answers inline. >>>>>>>>> >>>>>>>>>> >>>>>>>>>> 1. Does the user specify whether the ETag header should present >>>>>>>>>> in the response or not? Or is it always available if the cache >>>>>>>>>> mediator is >>>>>>>>>> used? >>>>>>>>>> >>>>>>>>> If the backend returns the response with ETag header, cahce >>>>>>>>> mediator always need to validate the response before sending the >>>>>>>>> cached >>>>>>>>> response to the user. >>>>>>>>> >>>>>>>>>> >>>>>>>>>>> - If it is available and ETag is present in the cached >>>>>>>>>>> response, make a request with "If-None-Match" header with the >>>>>>>>>>> ETag value. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> - If the server returns "304 Not Modified" response returns >>>>>>>>>>> the cached response to the user. >>>>>>>>>>> >>>>>>>>>>> 2. If the caller makes a request with "If-None-Match" header >>>>>>>>>> with the ETag value and if it matched, why would you need to respond >>>>>>>>>> with >>>>>>>>>> the cached message. Shouldn't it be only 304 with empty message as >>>>>>>>>> the >>>>>>>>>> response hasn't changed? >>>>>>>>>> >>>>>>>>> I considered only the use case where the backend server response >>>>>>>>> has the ETag header. But we need to consider the request as well. As >>>>>>>>> you >>>>>>>>> said, if the user sends a request with "If-None-Match" header >>>>>>>>> with the ETag value and if it is matched with the cached response ETag >>>>>>>>> value, then we need to send 304 response. If it is not matched, cache >>>>>>>>> mediator should validate the cached response with the backend and >>>>>>>>> return >>>>>>>>> the response to the user. Thanks for pointing this out. >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> *Honor "max-age" cache-control header*If the "max-age" header >>>>>>>>>>> presents in the response it specifies the maximum time in seconds >>>>>>>>>>> that the >>>>>>>>>>> fetched response is allowed to be reused from the time of the >>>>>>>>>>> request. So >>>>>>>>>>> the response should be cached and reused within the max-age time >>>>>>>>>>> limit. So >>>>>>>>>>> the Cache mediator should honor max-age instead of timeout >>>>>>>>>>> configuration if >>>>>>>>>>> it is less than the timeout configuration. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 3. What is the behavior when the timeout configuration is less >>>>>>>>>> than the max-age cache-control header? >>>>>>>>>> >>>>>>>>> Cached response expires after the timeout limit. >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Keerthika. >>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Jan 11, 2018 at 3:20 AM, Keerthika Mahendralingam < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> Hi All, >>>>>>>>>>> >>>>>>>>>>> In the current cache mediator implementation, cache control >>>>>>>>>>> headers and ETag haven't been considered when serving responses >>>>>>>>>>> through the >>>>>>>>>>> cache mediator. Basically, it caches all responses and responds >>>>>>>>>>> with same >>>>>>>>>>> headers for the subsequent requests. I am planning to improve the >>>>>>>>>>> current >>>>>>>>>>> cache mediator with the following features: >>>>>>>>>>> >>>>>>>>>>> - Honor ETag header >>>>>>>>>>> - Honor "no-cache" & "no-store" cache-control header. >>>>>>>>>>> - Honor "max-age" cache-control header. >>>>>>>>>>> - Add Age header based on "max-age" cache-control header >>>>>>>>>>> when returning the cached response. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> *1. ETag support:* >>>>>>>>>>> If ETag header is present in the response, subsequent requests >>>>>>>>>>> need to be issued with the "If-None-Match" header(with ETag value) >>>>>>>>>>> and if >>>>>>>>>>> the requested resource is modified from the last response fetched >>>>>>>>>>> time, a >>>>>>>>>>> new modified response will be returned with new ETag. And this new >>>>>>>>>>> response >>>>>>>>>>> needs to be cached. If it is not modified, the server returns a >>>>>>>>>>> "304 Not >>>>>>>>>>> Modified" response. In that case, the cached response can be reused. >>>>>>>>>>> >>>>>>>>>>> Flow: >>>>>>>>>>> >>>>>>>>>>> - Cache mediator receives a request. >>>>>>>>>>> - Check whether a cached response is available for the same >>>>>>>>>>> request. >>>>>>>>>>> - If it is available and ETag is present in the cached >>>>>>>>>>> response, make a request with "If-None-Match" header with the >>>>>>>>>>> ETag value. >>>>>>>>>>> - If the server returns "304 Not Modified" response returns >>>>>>>>>>> the cached response to the user. >>>>>>>>>>> - If the server returns a new modified response(200 OK >>>>>>>>>>> response) then cache the newly returned response. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> *2. Honor "no-cache" and "no-store" header* >>>>>>>>>>> >>>>>>>>>>> - If the "no-cache" header is present in the response it >>>>>>>>>>> indicates that the returned response can’t be used to satisfy a >>>>>>>>>>> subsequent >>>>>>>>>>> request to the same URL without first checking with the server >>>>>>>>>>> if the >>>>>>>>>>> response has changed. So before responding with the cached >>>>>>>>>>> response cache >>>>>>>>>>> mediator should validate the response with ETag. This can be >>>>>>>>>>> supported >>>>>>>>>>> through the ETag support. >>>>>>>>>>> - If the "no-store" header is present in the response, Cache >>>>>>>>>>> mediator should not cache the returned response. >>>>>>>>>>> >>>>>>>>>>> *3. Honor "max-age" cache-control header* >>>>>>>>>>> If the "max-age" header presents in the response it specifies >>>>>>>>>>> the maximum time in seconds that the fetched response is allowed to >>>>>>>>>>> be >>>>>>>>>>> reused from the time of the request. So the response should be >>>>>>>>>>> cached and >>>>>>>>>>> reused within the max-age time limit. So the Cache mediator should >>>>>>>>>>> honor max-age instead of timeout configuration if it is less than >>>>>>>>>>> the >>>>>>>>>>> timeout configuration. >>>>>>>>>>> >>>>>>>>>>> 4. *Include an ‘Age’ header with the response* >>>>>>>>>>> Cache mediator should return the true TTL value of a response >>>>>>>>>>> without altering the value of the cache-control max-age header >>>>>>>>>>> returned by >>>>>>>>>>> the back-end. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Flow: >>>>>>>>>>> >>>>>>>>>>> - Calculate the TTL using response fetched time and max-age >>>>>>>>>>> header >>>>>>>>>>> - Set the Age header to the cached response before returning >>>>>>>>>>> it to the user. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> [1]. https://developers.google.com/web/fundamentals/performa >>>>>>>>>>> nce/optimizing-content-efficiency/http-caching >>>>>>>>>>> [2]. https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Keerthika. >>>>>>>>>>> -- >>>>>>>>>>> <[email protected]> >>>>>>>>>>> Keerthika Mahendralingam >>>>>>>>>>> Software Engineer >>>>>>>>>>> Mobile :+94 (0) 776 121144 <+94%2077%20612%201144> >>>>>>>>>>> [email protected] >>>>>>>>>>> WSO2, Inc. >>>>>>>>>>> lean . enterprise . middleware >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Shazni Nazeer >>>>>>>>>> >>>>>>>>>> Mob : +94 777737331 >>>>>>>>>> LinkedIn : http://lk.linkedin.com/in/shazninazeer >>>>>>>>>> >>>>>>>>>> Blogs : >>>>>>>>>> >>>>>>>>>> https://medium.com/@mshazninazeer >>>>>>>>>> http://shazninazeer.blogspot.com >>>>>>>>>> >>>>>>>>>> <http://wso2.com/signature> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> <[email protected]> >>>>>>>>> Keerthika Mahendralingam >>>>>>>>> Software Engineer >>>>>>>>> Mobile :+94 (0) 776 121144 <+94%2077%20612%201144> >>>>>>>>> [email protected] >>>>>>>>> WSO2, Inc. >>>>>>>>> lean . enterprise . middleware >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> *Isuru Udana* >>>>>>>> Senior Technical Lead >>>>>>>> WSO2 Inc.; http://wso2.com >>>>>>>> email: [email protected] cell: +94 77 3791887 <077%20379%201887> >>>>>>>> blog: http://mytecheye.blogspot.com/ >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> >>>>>>> *Sanjeewa Malalgoda* >>>>>>> WSO2 Inc. >>>>>>> Mobile : +94713068779 <+94%2071%20306%208779> >>>>>>> >>>>>>> <http://sanjeewamalalgoda.blogspot.com/>blog >>>>>>> :http://sanjeewamalalgoda.blogspot.com/ >>>>>>> <http://sanjeewamalalgoda.blogspot.com/> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Vijitha Ekanayake >>>>>> Senior Software Engineer*, *WSO2, Inc.; http://wso2.com/ >>>>>> Mobile : +94 777 24 73 39 | +94 718 74 44 08 >>>>>> lean.enterprise.middleware >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> <[email protected]> >>>>> Keerthika Mahendralingam >>>>> Software Engineer >>>>> Mobile :+94 (0) 776 121144 <+94%2077%20612%201144> >>>>> [email protected] >>>>> WSO2, Inc. >>>>> lean . enterprise . middleware >>>>> >>>> >>>> >>>> >>>> -- >>>> Riyafa Abdul Hameed >>>> Software Engineer, WSO2 Lanka (Pvt) Ltd <http://wso2.com/> >>>> >>>> Email: [email protected] <[email protected]> >>>> Website: https://riyafa.wordpress.com/ <http://riyafa.wordpress.com/> >>>> <http://facebook.com/riyafa.ahf> <http://lk.linkedin.com/in/riyafa> >>>> <http://twitter.com/Riyafa1> >>>> >>> >>> >>> >>> -- >>> <[email protected]> >>> Keerthika Mahendralingam >>> Software Engineer >>> Mobile :+94 (0) 776 121144 <+94%2077%20612%201144> >>> [email protected] >>> WSO2, Inc. >>> lean . enterprise . middleware >>> >> >> >> >> -- >> Dushan Abeyruwan | Architect >> Technical Support,MV >> PMC Member Apache Synpase >> WSO2 Inc. http://wso2.com/ >> Blog:*http://www.dushantech.com/ <http://www.dushantech.com/>* >> LinkedIn:*https://www.linkedin.com/in/dushanabeyruwan >> <https://www.linkedin.com/in/dushanabeyruwan>* >> Mobile:(001)408-791-9312 <+1%20408-791-9312> >> >> > > > -- > Riyafa Abdul Hameed > Software Engineer, WSO2 Lanka (Pvt) Ltd <http://wso2.com/> > > Email: [email protected] <[email protected]> > Website: https://riyafa.wordpress.com/ <http://riyafa.wordpress.com/> > <http://facebook.com/riyafa.ahf> <http://lk.linkedin.com/in/riyafa> > <http://twitter.com/Riyafa1> > -- Dimuthu Leelarathne Director, Solutions Architecture WSO2, Inc. (http://wso2.com) email: [email protected] Mobile: +94773661935 Blog: http://muthulee.blogspot.com Lean . Enterprise . Middleware
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
