1

(別のホスティングで) 問題が発生しており、実際にはホスト設定を変更できないため、PHP ソリューションを探しています。

ブラウザー (Symfony の HttpFoundation\Response) に応答を送信すると、一部のヘッダーが重複し、矛盾します。ブラウザよりもそれらをキャッシュしません。

PHP コード

    $response = new Response(
        $html,
        200,
        array(
            "content-type" => "text/html; charset=UTF-8",
        )
    );

    $response->setCache(array(
        'last_modified' => $page->getEditedAt(),
        'max_age'       => $staticCache,
        's_maxage'      => $staticCache,
        'private'       => false,
        'public'        => true,
    ));

ブラウザのヘッダーの一部

キャッシュ制御: 最大年齢 = 1800、公開、s-最大年齢 = 1800

Cache-Control:no-store、no-cache、must-revalidate、post-check=0、pre-check=0

日付:2013 年 10 月 1 日 (火) 15:08:39 GMT

有効期限:1981 年 11 月 19 日(木) 08:52:00 GMT

pragma:no-cache

しかし、私のページは公開され、キャッシュ可能である必要があります。残りのヘッダーはどこに設定されていますか?どうすればオフにできますか?

4

1 に答える 1

0

PHP はキャッシュ設定を上書きしています。その「有効期限」の日付は非常に具体的で、PHP ソース コードに含まれています。このスタック オーバーフローの回答によると、開発者の誕生日です。

これをオフにするには、php.iniのsession.cache-limiter 設定を変更します。session_cache_limiter 関数ページには、ここで設定できる値に関する詳細情報があります。値を public または none に設定して、もう一度テストしてみてください。

session.cache_limiter 設定の現在の値は、値をエコーする小さなテスト ページで確認できます。

<?php

echo(ini_get('session.cache_limiter'));

ホスト設定を編集できないため、PHP ソリューションを探しているとおっしゃいました。ini_set関数を使用して、コード内の値を変更できます。

于 2013-11-01T00:24:40.230 に答える