更新到PHP 8后,使用API平台设置自定义HTTP缓存头不再起作用

6jjcrrmo  于 2023-02-15  发布在  PHP
关注(0)|答案(1)|浏览(106)

我在symfony应用程序中使用Varnish作为API平台端点。API平台版本是2.6,由于我升级到了PHP 8,API平台配置中的cache_headers选项不再工作。
我为一个特定的API平台端点配置了这个配置

collectionOperations:
    voucher_list:
        method: GET
        cache_headers:
            max-age: 3600
            shared_max_age: 3600
        path: /account/{account_id}/vouchers
        requirements:
            account_id: '\d+'
        normalization_context:
            groups: ['voucher_list:read']

这在php7.4上运行得很好。
现在,Cache-Control在此端点上的值为no-cache。
只有在API_platform.yaml中设置了默认配置,才会设置缓存控制

http_cache:
    max_age: 3600
    shared_max_age: 3600
    vary: ['Accept']
    public: true
ufj5ltwl

ufj5ltwl1#

在收集操作cache_headers中,最大年龄定义为max-age,而不是max_age
正如我在此文档www.example.com中看到https://api-platform.com/docs/core/performance/#setting-custom-http-cache-headers
max_age似乎是正确的参数名。正如您在通用配置中所看到的,您正确地将http_cache设置为max_age
即使在API平台2.6中https://api-platform.com/docs/v2.6/core/performance/#setting-custom-http-cache-headers

相关问题