HOME | ドキュメント |  ブログ  |  BBS  |  瓦版  | 将棋プロジェクト |  物置小屋   

象歩 ドキュメント

Categories
Zope (46 items)
歳時記 (26 items)
工作 (19 items)
将棋 (25 items)
料理 (2 items)
Vine (27 items)
Squeak (2 items)
(1 items)
雑記 (4 items)
Python (19 items)
ZOPE3 (3 items)
Linux (6 items)
(1 items)
道具 (3 items)
買い物 (1 items)
PC工作 (2 items)
ボート (3 items)
Recent Entries XML
Recent Comments
Recent Trackbacks
Archives
09 September 2007

ZShogi に If-Modified-Since

ZShogi-0.5.1, PyShogi-0.5.5
Zope  

ZShogi-0.5.1 で HTTP ヘッダ If-Modified-Since を受け取った場合の対応をしてみました。 今まで局面を動的に返すことしか考慮してなかったのですが、 クライアントから棋譜全体を静的に get することもあるので。 以下のようなコードを追加。

# ZShogi.py
...
from App.Common import rfc1123_date
...
def index_html(self, REQUEST=None):
    if REQUEST is not None:
        last = REQUEST.get('HTTP_IF_MODIFIED_SINCE', '')
        mtime = rfc1123_date(self.bobobase_modification_time())
        # 棋譜が更新されてない場合は HTTP ステータス 304 を返す
        if mtime == last:
            REQUEST.RESPONSE.setStatus(304) # Not Modified
            return ''
        # 棋譜データを返す
        _set_header = REQUEST.RESPONSE.setHeader
        _set_header('last-modified', mtime)
        _set_header('X-Zope-Product', 'ZShogi-%s' % __version__)
        _set_header('Content-Type', 'application/xml')
        ...