Commit a8b69a2b authored by Kazuhiko Shiozaki's avatar Kazuhiko Shiozaki

Revert "patch: Caching Policy Manager should respect existing cache-control response headers."

This reverts commit 25cf4933.

Revert "patch : Caching Policy Manager should not override existing response headers."

This reverts commit 7187fb69.
parent e4103b73
...@@ -15,57 +15,6 @@ ...@@ -15,57 +15,6 @@
from Acquisition import aq_parent from Acquisition import aq_parent
from Products.CMFCore.utils import getToolByName, SUBTEMPLATE from Products.CMFCore.utils import getToolByName, SUBTEMPLATE
# patch _setCacheHeaders so that existing headers are not overridden
def _setCacheHeaders(obj, extra_context):
"""Set cache headers according to cache policy manager for the obj."""
REQUEST = getattr(obj, 'REQUEST', None)
if REQUEST is not None:
call_count = getattr(REQUEST, SUBTEMPLATE, 1) - 1
setattr(REQUEST, SUBTEMPLATE, call_count)
if call_count != 0:
return
# cleanup
delattr(REQUEST, SUBTEMPLATE)
content = aq_parent(obj)
manager = getToolByName(obj, 'caching_policy_manager', None)
if manager is None:
return
view_name = obj.getId()
headers = manager.getHTTPCachingHeaders(
content, view_name, extra_context
)
RESPONSE = REQUEST['RESPONSE']
for key, value in headers:
if key == 'ETag':
RESPONSE.setHeader(key, value, literal=1)
# PATCH BEGIN: respect existing Cache-Control header if exists
if key.lower() == 'cache-control':
cache_control = RESPONSE.getHeader('cache-control')
if cache_control:
existing_key_list = \
[e.split('=', 2)[0].strip().lower() for e in \
cache_control.split(',')]
for e in value.split(','):
if e.split('=', 2)[0].strip().lower() not in existing_key_list:
cache_control += ', %s' % e.strip()
else:
cache_control = value
RESPONSE.setHeader(key, cache_control)
# PATCH END
else:
RESPONSE.setHeader(key, value)
if headers:
RESPONSE.setHeader('X-Cache-Headers-Set-By',
'CachingPolicyManager: %s' %
'/'.join(manager.getPhysicalPath()))
import Products.CMFCore.utils
Products.CMFCore.utils._setCacheHeaders = _setCacheHeaders
# To load all erp5.component.tool.* so that they can be added through 'ERP5 # To load all erp5.component.tool.* so that they can be added through 'ERP5
# Site' => Add 'ERP5 Tool'. # Site' => Add 'ERP5 Tool'.
from Products.CMFCore.utils import addInstanceForm from Products.CMFCore.utils import addInstanceForm
...@@ -98,4 +47,5 @@ def manage_addToolForm(self, REQUEST): ...@@ -98,4 +47,5 @@ def manage_addToolForm(self, REQUEST):
factory_types_list=tl, factory_types_list=tl,
factory_need_id=0) factory_need_id=0)
import Products.CMFCore.utils
Products.CMFCore.utils.manage_addToolForm = manage_addToolForm Products.CMFCore.utils.manage_addToolForm = manage_addToolForm
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment