blob: 03aac7c976d7cc4029cfa4d7b8697d7aa5ec12f7 [file] [log] [blame]
.. Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
.. include:: ../../common.defs
.. _developer-cache-api-functions:
API functions
*************
.. c:function:: void TSHttpTxnReqCacheableSet(TSHttpTxn txnp, int flag)
Set a flag that marks a request as cacheable. This is a positive override
only, setting :arg:`flag` to ``0`` restores the default behavior, it does not
force the request to be uncacheable.
.. c:function:: TSReturnCode TSCacheUrlSet(TSHttpTxn txnp, char const* url, int length)
Set the cache key for the transaction :arg:`txnp` as the string pointed at by
:arg:`url` of :arg:`length` characters. It need not be NUL-terminated. This should
be called from ``TS_HTTP_READ_REQUEST_HDR_HOOK`` which is before cache lookup
but late enough that the HTTP request header is available.
The APIs that modify the cache key can be called as early as
``TS_HTTP_READ_REQUEST_HDR_HOOK`` but no later than
``TS_HTTP_POST_REMAP_HOOK``. The cache key is not only used for a cache lookup
before going to origin, but also to mark the intent to write to cache on an
origin response (if possible).
Cache Internals
===============
.. cpp:function:: int DIR_SIZE_WITH_BLOCK(int big)
A preprocessor macro which computes the maximum size of a fragment based on
the value of :arg:`big`. This is computed as if the argument where the value of
the :arg:`big` field in a struct :cpp:class:`Dir`.
.. cpp:function:: int DIR_BLOCK_SIZE(int big)
A preprocessor macro which computes the block size multiplier for a struct
:cpp:class:`Dir` where :arg:`big` is the :arg:`big` field value.