web-dev-qa-db-ja.com

メタタグの不正な値

Html5バリデーターをw3cバリデーターから自分のサイトに渡すと問題が発生します。エラーは次のとおりです。

Bad value Content-Script-Type for attribute http-equiv on element meta
<meta http-equiv="Content-Script-Type" content="text/javascript" >

Bad value expires for attribute http-equiv on element meta
<meta http-equiv="expires" content="Wed, 26 Feb 1997 08:21:57 GMT" >

Bad value pragma for attribute http-equiv on element meta
<meta http-equiv="pragma" content="no-cache" >

Bad value Cache-Control for attribute http-equiv on element meta.
<meta http-equiv="Cache-Control" content="no-cache" >

Html5バリデーターを渡すためのメタタグの正しい値は何ですか?

17
José Carlos

HTML5の場合、ヘッダーでキャッシュマニフェストファイルを使用します。これは使用方法の例です: http://www.w3.org/TR/html5/browsers.html#manifests

また、これでキャッシュを強制しません:

<meta http-equiv="expires" content="0">

これは、キャッシュマニフェストファイルの使用方法に関する優れたチュートリアルです。 https://www.html5rocks.com/en/tutorials/appcache/beginner/#toc-manifest-file-creating

8
ews2001

受け入れられた答えは間違っています! これ は良い答えです。

アロヒを引用するには:

キャッシュの指示をメタタグに入れることは良い考えではありません。ブラウザがそれらを読むことはできますが、プロキシはそうしないからです。そのため、それらは無効であり、キャッシュ命令を実際のHTTPヘッダーとして送信する必要があります。

補遺:Apacheと.htaccessの場合、次を使用できます

<ifmodule mod_expires.c>
ExpiresActive On
ExpiresDefault value      or
ExpiresByType text/css  "access plus 1 month"
...
</IfModule>

PHPには、headers_sent()およびheader()関数があります。

function header_no_cache () {
    \header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
    \header('Pragma: no-cache'); // HTTP 1.0.
    \header('Expires: 0'); // Proxies.
}

ポイントは、キャッシング命令はヘッダーにある必要があるということです。 htmlファイルにはありません。

7
CoR