MagpieとかSimplePieとかあんまり理解していませんが... この関数はRSSを読み込んでくる方の関数ですね。
modx の rss_fetch.inc の function fetch_rss ($url)内でもやはり 304 も ETagもきっちり入っています。
そんなことはないですよ。Date の部分はアクセスするたびに、ちゃんと変化しているので。
これだと、RSSのドキュメント自身が編集されないと、値が変化しないのでは?
RSS出力対象になっているドキュメントを全部サーチして、
その中でeditedonが一番新しい(大きい)値を探してこないといけないような気がします。
とりあえずはこれでもいいと思うのですが本来は RSS に指定されたフォルダ以下から取るべきでしょうね。
過去にも語られていますが、結局ページ毎に何の値をもって更新されたと判断するかが難しい...のでは?
(RSSの場合は上記のような感じでしょうが、それ以外のページではまた違うのかも?)
http://modxcms.com/forums/index.php?topic=4569.0
WordPress と同じように最新記事の時刻を MD5で暗号化した文字列を返すだけでいいと思います。
あ、えーーと・・・CMSの開発者がという意味ではなくて、クライアント側がetagを無視することが多いということです。
でもこれ、検証がけっこう厄介ですよ。tkfmさんも指摘されてますが、何をもって最新とするかは運用によっても違いますし。
上記の例はすべての記事をキャッシュさせたくない場合の例ですよね。
過去にも語られていますが、結局ページ毎に何の値をもって更新されたと判断するかが難しい...のでは?
(RSSの場合は上記のような感じでしょうが、それ以外のページではまた違うのかも?)
http://modxcms.com/forums/index.php?topic=4569.0
もともとETagはそういうものなので・・・
WordPress と同じように最新記事の時刻を MD5で暗号化した文字列を返すだけでいいと思います。
最新記事の時刻さえ取れればこの処理自体は難しいことではないですよね。
そうなんですか ・・ よく考えれば fetch ですからね。。全面的に WordPress を参考にするのが早いかもですね
MagpieとかSimplePieとかあんまり理解していませんが... この関数はRSSを読み込んでくる方の関数ですね。
管理画面でmodxの最新情報とかセキュリティ情報を表示するのに使われています。
多分、Last-Modifiedとかを出力する関数ではないのでは?
yama さんつくりかけのプラグインで実装お願いします。標準添付のプラグインになるようにがんばってください (・・?
もともとETagはそういうものなので・・・
最新時刻の取得自体はDittoでできると思いますが、Dittoで条件付きGETを実装することはできないので、自前でプラグインを作る程度の難しさはあると思います。
あまりしつこくて僕も好きじゃないけど 70時間以上一ヶ月も続けてアクセスがあったのは modx にしてからなんで検証用のテスト道具としてはちょうどいいかも、といったところです。
ちなみにbaiduはかなり気まぐれなロボットなので、あまり気にしないほうがいいと思いますよ。まじめに分析している人もほとんどいないと思います。僕の場合はbaiduが来たらむしろ追い返すことにしてます。
読み返してて、今頃になって気が付きました。
これだと、RSSのドキュメント自身が編集されないと、値が変化しないのでは?
RSS出力対象になっているドキュメントを全部サーチして、
その中でeditedonが一番新しい(大きい)値を探してこないといけないような気がします。

$site_start = $modx->config['site_start'];
switch ($modx->documentObject['id']) {
case $site_start: // スタートページの場合ドキュメント全体からの最新更新時刻を出力する
$sql= "SELECT MAX(editedon) AS latest FROM ".$modx->getFullTableName("site_content")."WHERE published=1 AND deleted=0";
$result= $modx->dbQuery($sql);
$tmpRow= $modx->fetchRow($result);
$latest = $tmpRow['latest'];
header("Last-Modified: " . gmdate('r', $latest) . " GMT");
break;
case 11: // RSS 出力対象のドキュメント最新時刻と ETag を出力する (階層は1レベルのみに限定)
$sql= "SELECT MAX(editedon) AS latest FROM ".$modx->getFullTableName("site_content")."WHERE published=1 AND deleted=0 AND parent=2";
$result= $modx->dbQuery($sql);
$tmpRow= $modx->fetchRow($result);
$latest = $tmpRow['latest'];
$etag = '"' . md5($latest) . '"';
header("Last-Modified: " . gmdate('r', $latest) . " GMT");
header("ETag: $etag");
header("X-Powered-By: dainiti"); // これがすごい
break;
}