ユーザーが2ページ目にアクセスしたとき、日付順から30件スキップした31件目から60件目までを表示させれば、インデックスページは完成です。ここでようやく動的な計算をしていますが、ページだけなので大した処理はしてません。
静的に表示すれば確かに軽量にできますが、後から追加されるコメントや評価などを更新するためにHTMLを都度変更していかなければなりません。例えばYouTubeの動画にコメントすると即時反映されページを更新するとコメントは追加されたままです。静的なサイトでは何かしらイベントを起こさないと反映されません。コメント投稿時にHTML更新するということを考えましたが、Nginxファイルキャッシュによってキャッシュ情報に相違が生じるとエラーを起こしてしまうので断念しました。臨時対処法としてCronTabで12時間ごとに自動更新させています。
本題の改良点は、このCronTabで自動実行のプログラムは、実行するごとに全記事のHTMLファイルを生成するというところにあります。画像に△0の評価ボタンを付けてしまったため、全記事の本文から画像タグ<imgのsrcURLを抽出して、そのURLに与えられた評価を別データベースで取得するという極めて面倒な作業をしています。
posts = list(db.posts.find())
for post in posts:
post['content'] = re.sub(r'<img ([^>]*)src="([^"]+)"([^>]+)>', appendVote, post['content'])
def appendVote(m):
1行目:データベースから全ての記事を配列にして変数postsに格納
2行目:全ての記事を1記事としてループ、つまりpostにはposts[0]最初の記事が入っている
3行目:post['content']は記事本文のことで、それをappendVote関数に置換する。
5行目:置換関数、変数mには記事本文の中に入っている<imgタグの後方参照を取得できる。例えば記事本文にlt;img class="imgs" src="https://aa.jpg" alt="a">がある場合、m.group(1)には『class="imgs" 』が入っている。
日付 | |
編集 | |
分類 | お知らせ |
画像 | 1枚 |
PV | 日0 月385 年1575 |
97.85% |
最近日本語おぼつかないアホキャラが失われてる
ここの主スペック高くね笑
私にはむつかしくてヽ(∀)ノ何言ってるかわかんないけどお疲れ様です。 2、3年前からずっとこのサイトみてるので とても使いやすくなったと思います(◎▽◎) これからも頑張ってください💪('ω'💪)
更新期待してるで!
どんどんスタイリッシュなサイトになってとても嬉しいです。
いや作品タグとかどこいってん頼むで
さっぱり分からんが乙!
がんばってくれ
ありがとうございます
ほんとハイスペックニート大好き
最近のアフィサイトはゴミ広告貼りまくりかつ内容がないゴミサイトばかりだからここは神サイト 頑張ってくれ
大好きです
お疲れ様です! いつもお世話になっています!これで更新頻度も上がるんですね!もっとお世話になります!わら
更新遅いとか文句言ってた自分が憎い!
誰か記事内検索の方法教えて
更新待ってるで〜〜
文字列検索機能は今日つけたいと思います
面白い昨日付いててくさ
おつかれちゃん
この記事にも抜けた萎えたボタン付いてるの草
うーんプロ
ホント大好きです
取り敢えず抜いた
お疲れ様です
いろいろさんがつ!
がんばえーっぽq(^-^q)
ほんと有能
お前すげーな
当方エンジニアです。 センズリをこきながら技術記事を毎回楽しみにしています!
ありがてぇ…
おつかれ
これからも頑張ってください!!!応援してます!!
これは抜ける
ユニーク‼
インテリな文字の羅列で抜いた いつもありがとうございます
動作が軽いのが好きで長いことお世話になってます。 管理人さん控えめに言ってすこ
web系のセキュリティエンジニアを目指してる学生です。 主さんのその豊富な知識と経験はどこで取得されたのでしょうか?
参考書など読まずにテスト環境を整え、自分で攻撃してどうなるか実践していくのがよいと思います
本当お前さん最高!これからも応援しとるよ
頑張ってたんやな!