成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Squid對動態頁面Cache的相關須知

系統 Linux
本文概述了Squid對動態頁面進行cache的時候需要考慮的方面。因為通常session都是用cookie實現,啟動一個session意味著服務器會發送一個Set-Cookie的HTTP頭,squid把這樣的頁面cache之后,會造成所有后續的訪問用戶都在自己的瀏覽器里設置相同的cookie,這會造成嚴重的后果。

使用Squid做代理服務器,靜態頁面還比較簡單,但動態頁面則并沒有那么簡單了。尤其現在大部分網頁都是動態頁面,運維人員在架設Squid的時候需要對這方面的配置留心。下面概述一下Squid對動態頁面進行cache的時候需要考慮的方面。

1 被cache的頁面必須對所有用戶顯示的內容都是一致的。

如果同一個URL(包括參數)對不同用戶如果顯示不同的內容,那么cache它會使一些用戶看到其它用戶才能看到的內容。

(我***步緩存的是訪問量***的閱讀帖子的頁面,但是頁面上原來有非常復雜的權限判斷,針對這種情況,考慮到大部分信息在短期內基本是變化不大的,只好將用戶基本信息寫入cookie,使用前端的js來控制。雖然這樣會導致限制不嚴格現象,但是因為畢竟不是商業應用,這些損失和性能相比還是可以接受的)

2 被cache的動態頁面不能啟動一個session。

因為通常session都是用cookie實現,啟動一個session意味著服務器會發送一個Set-Cookie的HTTP頭,squid把這樣的頁面cache之后,會造成所有后續的訪問用戶都在自己的瀏覽器里設置相同的cookie,這會造成嚴重的后果。所有設置cookie操作的頁面都有此類問題,即使不是啟用一個session。所以,這類頁面是絕對不能cache的。但是對包含在一個已啟動的session里的頁面進行cache則不會有這個問題。

(我基本上沒有用到session,set-cookie(服務器端的)在需要緩存的這個頁面也沒有,只有一個為了配合廣告活動增加的用js來set- cookie,所以也沒有問題)

3 用戶的訪問頻度必須遠遠超過頁面內容的更新頻度,否則cache的意義不大。

(這個頁面每天的pv超過100萬,所以還是想當有必要的 )

另外,cache動態頁面以后,由于squid會攔截用戶的請求,應用程序服務器收不到被攔截的請求,必須保證這不會影響應用的處理邏輯。

使用squid來cache動態頁面有兩種方式,一種是在頁面里動態生成幾個HTTP頭:其中一個是Last-Modified,這個頭表示頁面上次修改的時間,一般訪問靜態頁面時,apache會根據靜態文件的一個上次修改時戳來設置這個屬性。

(我們采用了這個last-modifyed 頭來進行,然后在文件會發生變化時通知squid這樣可以提高squid的緩存命中率)

另一個是Expires或者Cache-Control。Expires代表頁面將在該時間之后過期,squid會從后端的應用服務器重新獲取頁面。Cache-Control則通過一個max-age屬性來告訴squid和瀏覽器這個頁面從Last-Modified開始的生存時間。Expires和Cache-Control只設置一個就可以。

Last-Modified和Expires的時間格式是,Wed, 14 May 2003 13:06:17 GMT。注意生成這個時間時一定要轉換成GMT時間,這樣才能使互聯網的全球用戶都能正確識別。max-age的時間是一個整數,單位是秒。詳細的文檔請參考RFC2616。這幾個HTTP頭必須在所有頁面內容輸出之前進行設置,否則應用程序會報錯。

php的例子如下:

# Last-Modified時間設置為當前時間
header("Last-Modified: " . gmdate("D, d M Y H:i:s" . " GMT";
# Expires時間設置為1小時后
header("Expires: " . gmdate("D, d M Y H:i:s", time() + 3600) . " GMT";

第二種cache方式是使squid強制cache某些指定的頁面,而不管頁面中是否有前面提到的那幾個HTTP頭。相應的配置參數舉例如下:

#下面兩行表示凡是帶參數(含有?)的URL就不cache,必須注釋掉。
#acl QUERY urlpath_regex cgi-bin \?
#no_cache deny QUERY
#下面兩行創建一個acl,它匹配兩個jsp頁面
acl CACHABLE_PAGES urlpath_regex ^/topic/readSub\.jsp
acl CACHABLE_PAGES urlpath_regex ^/topic/listFrame\.jsp
#下面一個acl匹配所有的動態頁面
acl NONE_CACHABLE_PAGES urlpath_regex \? \.jsp
#允許cache兩個jsp頁面
no_cache allow CACHABLE_PAGES
#禁止cache其它的jsp頁面
no_cache deny NONE_CACHABLE_PAGES
#下面幾行設置頁面cache的時長,***行cache一天,第二行cache兩分鐘
refresh_pattern ^http://post.mop.com/topic/readSub\.jsp 1440 0% 1440 ignore-reload
refresh_pattern ^http://post.mop.com/topic/listFrame\.jsp 2 0% 2 ignore-reload

對于顯示帖子內容的頁面,當用戶回復之后,帖子內容就改變了,為了實時刷新頁面,可以在用戶改變帖子內容之后,打開一個tcp連接到squid,發送一個PURGE指令,就可以將指定的URL過期,squid會重新到服務器上抓***頁面。

相應頁面中需要增加:

Date last_modified_time = s.getLastReplyTime();
String modifySince=request.getHeader("If-Modified-Since";
SimpleDateFormat tempSdf=new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z",new java.util.Locale("en");
try{
Date modifySinceDate=tempSdf.parse(modifySince);
if (!modifySinceDate.before(last_modified_time)){
response.sendError(HttpServletResponse.SC_NOT_MODIFIED);
return;
}
}catch (Exception e){
out.println("";
}
long last_modified = last_modified_time.getTime();
response.setDateHeader("Last-Modified",last_modified);

—————————————————————————————-

察看cache命中率等信息,可以用如下命令:

/data/squid/bin/squidclient -p 80 cache_object://localhost/info

其中的如下信息比較重要:

Cache information for squid:
Request Hit Ratios: 5min: 41.5%, 60min: 40.1%
Byte Hit Ratios: 5min: 52.3%, 60min: 50.8%
Request Memory Hit Ratios: 5min: 27.7%, 60min: 30.7%
Request Disk Hit Ratios: 5min: 38.3%, 60min: 39.2%
Storage Swap size: 1886720 KB
Storage Mem size: 39452 KB
Mean Object Size: 50.85 KB
Requests given to unlinkd: 1685

參考:http://www.708034.cn/?p=298

【編輯推薦】

  1. 巧用Squid的ACL和訪問列表實現高效訪問控制
  2. Nginx squid架構的七大關鍵流程介紹
  3. 幫你輕松完成RHEL Squid安裝及調試
責任編輯:yangsai 來源: 網絡
相關推薦

2011-03-31 14:44:55

cactisquid監控

2009-07-17 17:33:22

jQuery

2015-11-16 10:34:19

Linux動態庫總結

2010-09-10 16:19:59

Squid 3.0Squid 2.7

2010-03-09 09:23:30

Python中文

2012-04-02 17:46:08

緩存對比

2009-11-26 15:51:38

Squid開源系統

2010-02-02 16:22:37

Python動態類型語

2012-09-18 09:50:41

2010-09-14 10:02:39

獲取Squid

2010-03-09 17:23:12

python開源

2009-07-21 15:40:59

Asp.Net動態頁面

2009-07-02 13:36:24

動態頁面JSP技術

2010-08-29 21:26:59

DHCP協議

2015-07-06 13:47:54

布線皮線光纜

2023-04-06 00:11:12

Java接口開發

2010-02-23 14:55:00

Python動態語言

2009-06-15 17:44:38

JBoss Cache

2009-11-30 13:26:25

Suse代理SQUID

2009-12-16 14:20:16

Visual Stud
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久久久免费看 | www精品美女久久久tv | 久久久久国产精品 | 国产成人综合在线 | 久久久久亚洲 | 国产精品毛片无码 | 欧美乱大交xxxxx另类电影 | 本地毛片 | 国产二区三区 | 亚洲精品一区二三区不卡 | 免费亚洲网站 | 影音先锋中文字幕在线观看 | 国产99久久久国产精品 | 国产一区2区 | 亚洲成人精品一区 | 免费成人高清 | 国产精品福利在线 | 久久久久99| 久久99精品视频 | 青草福利 | 青青久久久 | 国产精品免费观看 | 成人免费视频观看视频 | 久久夜夜| 久久亚洲欧美日韩精品专区 | 亚洲欧美中文日韩在线v日本 | 久久久av | 一级片在线视频 | 亚洲综合色视频在线观看 | 干干干日日日 | 在线播放中文字幕 | 久久青 | 欧美日韩久久精品 | 国产午夜精品视频 | 欧美精品三区 | 国产激情精品 | 中文欧美日韩 | 成人三级视频在线观看 | 在线免费观看色 | 欧美成人一区二区三区片免费 | 国产片侵犯亲女视频播放 |