web小ネタ:コピー禁止など

kindleやibooksの新刊・既刊情報を掲載、表紙画像をそれなりの大きさで表示しようと思った時に、まんまimgタグで表示させるのはちょっと無造作すぎるなあ、と。自分で描いたイラストならともかく、お願いしたりいただいたりしたイラストだ。
そこで「画像コピー禁止」を検索して見つけた下記の方法で細工。
・画像の上で右クリック禁止伝統技
「onContextMenu="return false"」
・画像を簡単にドラッグ&ドロップできないように。
表示する画像はcssで背景に指定して、表側のimgタグには透過gifを表示。
この方法を見つけたときは、よく思いつくなあ、なるほどなぁと呆れつつ感心。webなんて表示しているものはどうやったって取得されちゃうんでこの方法もその場しのぎ(例えばhttpでソースを取得しちゃえば画像ファイルのありかはわかる)
また、コピーされたくないテキストは以前に書いた 「個人情報をちょっと防衛」 のように。
・コンテキストメニューで右クリックは禁止
・ajaxを使って呼び出されるスクリプトでリファラなどをチェックして表示するorしないを制御
・表示してもjQueryで 「.bind("copy", function () { return false})」コピー禁止
にしておく。
マウスの右クリックもできず、キーボードショートカットでのコピーもできない状態になる。
右クリックできるように、とJavascriptを切ると当然ながらAjaxが効かないので、表示すらしない。
WEBは性善説を根拠にフリーであるべき(お金・対価がタダという意味ではない)と思うんだけど、残念ながらなかなかそうもいかないようで、ちょっとだけ。
ついでに。
ここんとこ雑記帖が重い=表示が遅いのでイラっとしていた。ここで何度も言うけど「WEBは早さが唯一の絶対正義」そんな状態なのに、各記事にカテゴリをつけるため、データベースにカテゴリ用テーブル、カテゴリと記事のリレーション用テーブルを追加。そりゃまた当然遅くなる。
SQLを改めて見てみたらば、indexをつけてたと思ってたテーブルの(いろんなSQL文の where句で最もよく使う)カラムにindexがついてないのに気づいて慌ててつけた。
結果、それまで体感で表示まで5〜7秒かかっていたのが3〜5秒に短縮された。
それでも遅いんだけど。これ以上の短縮はキャッシュで中間コードを保存するとか、静的ページを生成するとかになる。スクリプトの書き換えや運用も含めて考えなきゃいけないかな。
もしくはajaxのコンテナだらけにする…って、ajaxにすると検索エンジンが拾えないので却下だ。
サイトの細工やチューニングは、考え出すと・やりだすと面白いもんです。
[03/20 18:27:21] 追記。ということで、一部のパーツ単位で生成しておいて、DBからデータを取るのではなく、静的パーツを呼び出すだけにした。ほんの少し早くなった、ような気がする。
[2013/12/30 09:54:31] 追記。
直リンク禁止の定番も。
.htaccessで制御する(Apache)
.htaccess を置いたディレクトリ以下に適用される
・リファラをチェックして、自サイトからのアクセスなら 「is_ok」を設定。
・この指定の優先順位は、1)拒否 2)許可。
・すべてのアクセスを拒否する
・is_ok が環境変数に設定されていれば許可する
[2014/01/13 12:38:03]追記。
.htaccess でキャッシュコントロール
・cssやJavascript、画像などは1週間キャッシュする
・perlやphpはキャッシュしない
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
【電子書籍発売中】