2011-12-20 64 views
0

我目前正在從URL下載數據並拆分內容,只是爲了再次顯示在我的appspot上。來自URL的數據每天都會更改多次。我的appspot雖然保持不變。 我以爲我解決了這個問題,通過設定「無緩存」和頭的0GAE Java未下載請求的URL的刷新數據

這是我的代碼看起來像日期的編譯和它的作品:

public void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws IOException { 
     resp.setHeader("Pragma", "no-cache"); 
     resp.setDateHeader("Expires", 0); 

Content-Length:15983 - Content-Type:text/html - 日期:2011年12月20日(星期二) 14:06:53 GMT - 到期日:星期四01年1月01日00:00:00 GMT - Pragma:no-cache 服務器:谷歌前端

但我的appspot仍然不會像它應該那樣從URL中獲取刷新的數據。我在這裏錯過了什麼?由於沒有任何改變,因爲我已經改變了響應標題,我不知道還有什麼其他的辦法。

+0

一種選擇是稍微改變請求的URL - 例如添加'?'和一個隨機數 - 以防止GAE端的緩存。 – sje397 2011-12-20 14:24:21

+0

如何稍微更改請求URL並仍然可以訪問它?假設這是我的網址: URL url = new URL(「http://www.google.com」); BufferedReader閱讀器.... 這個URL看起來像什麼,請求示例? – DoDu 2011-12-20 14:33:31

+1

@dodinvents - 通常,附加一些未使用的參數並不會阻止它被投放 - 例如,添加'?n = 123'或者如果已經有參數追加'&n = 123'。所以'新網址(「google.com?n = 123」);' – sje397 2011-12-20 14:35:43

回答

0

當我編寫webapps時,我總是在我的servlets和JSP中使用「Cache-Control」頭文件。

public void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws IOException { 
     resp.setHeader("Cache-Control", "no-cache"); 
} 

僅供參考這裏要引用到14.9節在RFC 2616

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

+0

謝謝。我試過了,但沒有奏效。看起來GAE並不關心resp.setHeader ......但我會嘗試使用sje397方法。 – DoDu 2011-12-20 14:39:54