外部RSSを表示する場合のベストプラクティス
shin > 外部RSSを表示する場合のベストプラクティス @ 2011/12/12 13:15 |
---|
こんにちは。
BaserCMSでは内部のRSSはAjaxで読みこめば最新が表示されるようですが、外部(ドメインが異なる)サイトの場合はどうするのが良いのか、お尋ねしたく思っております。 http://forum.basercms.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=327&forum=5 上記トピックでは、Ajaxで読みこめばよいという結論になっています。 が、実際にはクロスドメイン制約のために、自サーバを経由する必要があり、経由部分でまたキャッシュされてしまい、という事態に陥りました※。 私の場合は、とりあえず、 「BaserCMSのキャッシュ機能をOFFにする方法」http://blog.cgfm.jp/garyu/archives/2380 のように、キャッシュを無効にして対処しておりますが、もっと良い方法はありますでしょうか? よろしくお願いします。 #試してはいないのですが、webrootに直接、スクリプトを置けばキャッシュされなかったりしますでしょうか? #※では、layout/*.ctpで無理やりクエリを処理したためにキャッシュされたのかなと、ふと思いまして。 ■ BaserCMSのバージョン:1.6.15 ■ PHPスキル(自己評価):c |
arata > Re: 外部RSSを表示する場合のベストプラクティス @ 2011/12/15 22:51 |
---|
shinさん、こんにちは!
確かにクロス・ドメインの対策はむつかしいところですねー。 フィード取得自体をPHPでやってしまう、とかどうでしょうか? キャッシュ処理に関しては、その中で何らかの条件分岐を使う。。。とか? 何か思いついたらまた書きますね! ■ 不明点解消できるかも。逆引きガイドもあります baserCMS公式wiki |
shin > Re: 外部RSSを表示する場合のベストプラクティス @ 2011/12/18 1:46 |
---|
「#試してはいないのですが、webrootに直接、スクリプトを置けばキャッシュされなかったりしますでしょうか?」
について自分で調べましたので、ご報告いたします。 結論から言えば、webroot以下のスクリプトはキャッシュされませんでした。 #ルーティング以外はシステム内部を経由しないためだと思います。 また、あるページ(管理画面から作成)で ・includeで読み込む ・file_get_contentsで読み込む ・Ajaxで読み込む(jQuery.load) の3パターンを試したところ、予想通り、Ajaxで読み込む場合以外では、キャッシュされました。 以上から、 ・外部(ドメインの異なる)サイトのページ(RSS・WebAPIなども含む)を呼び出したい場合はAjaxを使う。 ・Ajaxで呼び出すサーバーサイドスクリプトは(themed以下ではなく)webroot以下に配置する。 という結論になりそうです。 to. arataさん 返答有り難うございます。 >フィード取得自体をPHPでやってしまう、とかどうでしょうか? そもそも、外部フィードはJavaScriptではクロスドメイン制約のためにできないので、PHPなどを利用する以外に方法は無いと思われます。 #外部サイトがJSONPに対応しているとかなら話は別ですが。。。 >キャッシュ処理に関しては、その中で何らかの条件分岐を使う。。。とか? ??? BaserCMSにキャッシュを操作する方法があるのでしょうか? |