Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

動的なjavascript その2

自分でこんなこと書いてみたんだけどその後思ったこと。
動的なjavascript - def __mopemope__(self, *args, **kwargs):
やはり動的なjavascriptはやらない方が得策かもしれない。
いや正確に言うと実行時にjavascriptを自動生成するのはよくないかも知れないだ。
よろしくないなと思う理由は以下

  • キャッシュに乗らなくなってしまう可能性がある
  • javascriptのみ修正したいとき困難

キャッシュに乗らなくなってしまう可能性がある

これは設定の問題かも知れないんだけど。
動的に生成されたページはキャッシュに残らないようにするのが一般的である。
そのため本来staticなjavascriptがキャッシュに残らず、毎回読み込まれてしまう可能性がある。
小さいものであれば問題ないかもやはりレスポンスに影響が出てしまう可能性がある。
更にクライアントが膨大であるとそれらを毎回送り出すWebサーバの負荷にも影響が出てしまう。
あと場合によるが動的なページと同様、APサーバ毎回javascriptレンダリングするとAPサーバにも負担がかかってしまう。
じゃあ毎回レンダリングしなきゃいいじゃん?って話なんだけど。
Djangoのようにmemcachedを使えるのであればそれでもいい。

from django.views.decorators.cache import cache_page

def slashdot_this(request):
    ...
slashdot_this = cache_page(slashdot_this, 60 * 15)

javascriptのみ修正したいとき困難

これはこのまま。保守性がガクンと下がる。
javascriptを作ってる側を修正しないといけないので保守性が下がる。
裏で動いている言語がファンキーだと辛いかも知れない。

本当に動的である必要があるか?

きっと自動生成したjavascriptって書き換えない事が多いんじゃないかな?
単純にひとつ手順を減らしたいだけで使おうってのは良くない。
それはチョンボであり、無駄に負荷を増やすだけだ。
やはりコンパイルやデプロイ時にstaticファイルを吐き出して設置するのが良いんであろう。
(staticなファイルはApacheが担当するのでAPサーバの負担も少し減りそうだし)
Jemplateもそういう使われ方を想定した仕様のようだし。
Jemplateのお話はこちらが大変わかりやすいです。
Jemplate で JavaScript でもロジックとビューを分離する - naoyaのはてなダイアリー
(アー勉強になるなー)
javaであればAnt、Mavenなど良いビルドツールがあるのでけっこー簡単に実現できるのかな。
(最近java全然触ってないけど)
動的なjavascriptはやらない方がいいんじゃないかってお話でした。
うくく。