+1. Thanks Riyafa for the suggestion.

Thanks,
Keerthika.

On Fri, Jan 12, 2018 at 3:05 PM, Riyafa Abdul Hameed <riy...@wso2.com>
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 <
> keerth...@wso2.com> 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 <vijit...@wso2.com>
>> wrote:
>>
>>> Hi Sanjeewa,
>>>
>>>
>>> On Fri, Jan 12, 2018 at 12:01 PM, Sanjeewa Malalgoda <sanje...@wso2.com>
>>> 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 <isu...@wso2.com> 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 <
>>>>> keerth...@wso2.com> 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 <
>>>>>>> keerth...@wso2.com> 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.
>>>>>>>> --
>>>>>>>> <dev-requ...@wso2.org>
>>>>>>>> Keerthika Mahendralingam
>>>>>>>> Software Engineer
>>>>>>>> Mobile :+94 (0) 776 121144 <+94%2077%20612%201144>
>>>>>>>> keerth...@wso2.com
>>>>>>>> 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>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> <dev-requ...@wso2.org>
>>>>>> Keerthika Mahendralingam
>>>>>> Software Engineer
>>>>>> Mobile :+94 (0) 776 121144 <+94%2077%20612%201144>
>>>>>> keerth...@wso2.com
>>>>>> WSO2, Inc.
>>>>>> lean . enterprise . middleware
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Isuru Udana*
>>>>> Senior Technical Lead
>>>>> WSO2 Inc.; http://wso2.com
>>>>> email: isu...@wso2.com 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
>>>
>>
>>
>>
>> --
>> <dev-requ...@wso2.org>
>> Keerthika Mahendralingam
>> Software Engineer
>> Mobile :+94 (0) 776 121144 <+94%2077%20612%201144>
>> keerth...@wso2.com
>> WSO2, Inc.
>> lean . enterprise . middleware
>>
>
>
>
> --
> Riyafa Abdul Hameed
> Software Engineer, WSO2 Lanka (Pvt) Ltd <http://wso2.com/>
>
> Email: riy...@wso2.com <riyafa...@cse.mrt.ac.lk>
> Website: https://riyafa.wordpress.com/ <http://riyafa.wordpress.com/>
> <http://facebook.com/riyafa.ahf>  <http://lk.linkedin.com/in/riyafa>
> <http://twitter.com/Riyafa1>
>



-- 
<dev-requ...@wso2.org>
Keerthika Mahendralingam
Software Engineer
Mobile :+94 (0) 776 121144
keerth...@wso2.com
WSO2, Inc.
lean . enterprise . middleware
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to