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')
        ...