[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: no-cache



※ "寺" こと teranisi@gohome.org さんの
   『[emacs-w3m:01121] Re: no-cache』より

お騒がせして申し訳ありませんでしたが、結局、

土> 第3引数 no-cache が non-nil の時は常に、

寺> w3m が出す HTTP リクエストのヘッダに
寺>     Pragma: no-cache
寺>     Cache-Control: no-cache 
寺> をつけたいってことなんですよね。

土> するようにすれば良いのではないでしょうか。

というふうな対応をしてみました。
ただし、w3m-retrieve でなく、w3m-w3m-retrieve にしました。

寺> 第 3 引数の no-cache は Emacs 上にあるキャッシュを使うかどうかですよね。

寺> よくわかってないんですが、HTTP リクエストに毎回

寺> Pragma: no-cache
寺> Cache-Control: no-cache 

寺> を付けられると、キャッシュサーバが If-Modified-Since を使わず、
寺> かならず body を取り寄せ直してしまって
寺> うれしくないのではないかと思いました。

私もそう思ったんですが、実際、このオプションが必要なケースは
めったにないと思いますので、
w3m-no-proxy-cache-for-foolish-server という変数を定義して、
これが non-nil でかつ no-cache 引数が non-nil だった場合のみ
"-o no_cache=1" をつけるというふうにしてみました。

これでよかったらマージしてもらえると助かります。
よろしくお願いします。(_ _)

そうそう、w3m-dump-head-source-command-arguments は list で
いいんですよね?
---
6/8 23:17頃
NECソフトウェア新潟 水戸
Index: ChangeLog
===================================================================
RCS file: c:/mit/cvsroot/emacs-w3m/ChangeLog,v
retrieving revision 1.1.1.8
diff -b -u -b -r1.1.1.8 ChangeLog
--- ChangeLog	8 Jun 2001 13:16:21 -0000	1.1.1.8
+++ ChangeLog	8 Jun 2001 14:05:33 -0000
@@ -1,3 +1,11 @@
+2001-06-08  Mito  <mit@nines.nec.co.jp>
+
+	* w3m.el (w3m-no-proxy-cache-for-foolish-server): New variable.
+	(w3m-dump-head-source-command-arguments): Change the value to
+	list.
+	(w3m-w3m-retrieve): No use cache on proxy server when `no-cache'
+	and `w3m-no-proxy-cache-for-foolish-server' in non-nil.
+
 2001-06-08  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
 
 	* w3m.el (w3m-w3m-retrieve): Remove URL's fragment before checking
Index: w3m.el
===================================================================
RCS file: c:/mit/cvsroot/emacs-w3m/w3m.el,v
retrieving revision 1.1.1.7
diff -b -u -b -r1.1.1.7 w3m.el
--- w3m.el	8 Jun 2001 13:16:24 -0000	1.1.1.7
+++ w3m.el	8 Jun 2001 13:59:28 -0000
@@ -576,6 +576,13 @@
 		 (file :tag "path of 'dirlist.cgi'"
 		  "/usr/local/lib/w3m/dirlist.cgi")))
 
+(defcustom w3m-no-proxy-cache-for-foolish-server nil
+  "*If non nil, no use cache on proxy server.
+This option should be used only if your proxy server is very
+foolish."
+  :group 'w3m
+  :type 'boolean)
+
 (eval-and-compile
   (defconst w3m-entity-alist		; html character entities and values
     (eval-when-compile
@@ -798,7 +805,7 @@
     "Regexp used in parsing to detect string."))
 
 (defconst w3m-dump-head-source-command-arguments
-  (if (eq w3m-type 'w3mmee) "-dump=extra,head,source" "-dump_extra")
+  (if (eq w3m-type 'w3mmee) '("-dump=extra,head,source") '("-dump_extra"))
   "Arguments for 'dump_extra' execution of w3m.")
 
 (defvar w3m-halfdump-command nil
@@ -2075,13 +2082,21 @@
     (set-buffer-multibyte nil)
     (when (string-match "#\\([^#]+\\)$" url)
       (setq url (substring url 0 (match-beginning 0))))
-    (let ((type
+    (let (type
+          (w3m-command-arguments w3m-command-arguments)
+          (w3m-halfdump-command-common-arguments
+           w3m-halfdump-command-common-arguments))
+      (when (and no-cache w3m-no-proxy-cache-for-foolish-server)
+        (dolist (var '(w3m-command-arguments
+                       w3m-halfdump-command-common-arguments))
+          (set var (append (symbol-value var) '("-o" "no_cache=1")))))
+      (setq type
 	   (or (unless no-cache
 		 (and (w3m-cache-request-contents url)
 		      (w3m-content-type url)))
 	       (car (if (memq w3m-type '(w3m-mnc w3mmee))
 			(w3m-w3m-dump-head-source url)
-		      (w3m-w3m-dump-source url))))))
+		      (w3m-w3m-dump-source url)))))
       (when type
 	(or no-decode
 	    (w3m-decode-encoded-contents (w3m-content-encoding url))