當前位置:首頁 » 文件管理 » apache緩存時間

apache緩存時間

發布時間: 2022-11-19 15:41:10

① apache-httpd的三種模式

apache httpd-2.4

新增模塊;

mod_proxy_fcgi(可提供 fcgi 代理)

mod_ratelimit(限制用戶帶寬)

mod_request(請求模塊,對請求做過濾)

mod_remoteip(匹配客戶端的 IP 地址)

對於基於 IP 的訪問控製做了修改,不再支持 allow,deny,order 機制,而是統一使用 require進行

還新增以下幾條新特性;

1、MPM 支持在運行時裝載;不過要開啟這種特性,在編譯安裝要啟用這三種功能;

--enable-mpms-shared=all --with-mpm=event

2、支持 event

3、支持非同步讀寫

4、在每個模塊及每個目錄上指定日誌級別

5、增強版的表達式分析器

6、每請求配置:<If>, <Elseif>

7、毫秒級別的 keepalive timeout

8、基於 FQDN 的虛擬主機不再需要 NameVirtualHost 指令

9、支持使用自定義變數

安裝時HTTPd 可以添加許多模塊

相關模塊解析:

--enable-so:支持動態共享模塊(即打開 DSO 支持)

--enable-rewrite:支持 url 重寫

--enable-ssl:支持 ssl

--with-ssl=/usr/local/openssl:指定 ssl 安裝位置

--enable-cgi:啟用 cgi

--enable-cgid:MPM 使用的是 event 或 worker 要啟用 cgid

--enable-moles=most:明確指明要靜態編譯到 httpd 二進制文件的模塊,<MODULE-LIST>為

空格分隔的模塊名列表、all 或者 most,all 表示包含所有模塊,most 表示包含大部分常用模



--enable-mpms-shared=all:啟用 MPM 所有支持的模式,這樣 event、worker、prefork 就會以

模塊化的方式安裝,要用哪個就在 httpd.conf 里配置就好了。

--with-mpm=event:指定啟用的 mpm 模式,默認使用 enevt 模式,在 apache 的早期版本 2.0

默認 prefork,2.2 版本是 worker,2.4 版本是 event.

--with-pcre=/usr/local/pcre:支持 pcre

--with-z=/usr/local/zlib:使用 zlib 壓縮

--with-apr=/usr/local/apr:指定 apr 的安裝路徑

--with-apr-util=/usr/local/apr-util:指定 apr-util 的安裝路徑

--enable-expires:激活彧通過配置文件控制 HTTP 的「Expires:」和「Cache-Control:」頭內容,即

對網站圖片、js、css 等內容,提供客戶端瀏覽器緩存的設置。這個是 apache 調優的一個重

要選項之一。

--enable-deflate:提供對內容的壓縮傳輸編碼支持,一般是 html、js、css 等內容的站點。使

用此參數會打打提高傳輸速度,提升訪問者訪問的體驗。在生產環境中,這是 apache 調優

的一個重要選項之一。

Apache 的優化配置:

apache 所運行的硬體環境都是對性能影響最大的因素,即使不能對硬體進行升級,也最好

給 apache 一個單獨的主機以免受到其他應用的干擾。各個硬體指標中,對性能影響最大的

是內存,對於靜態內容(圖片、javascript 文件、css 文件等),它決定了 apache 可以緩存多

少內容,它緩存的內容越多,在硬碟上讀取內容的機會就越少,大內存可以極大提高靜態站

點的速度;對動態高負載站點來說,每個請求保存的時間更多一些,apache 的 mpm 模塊會

為每個請求派生出相應的進程或線程分別處理,而進程或線程的數量與內存的消耗近似成正

比,因此增大內存對提高動態站點的負載和運行速度也極為有利

其次是硬碟的速度,靜態站點尤為突出,apache 不斷的在讀取文件並發送給相應的請求,

硬碟的讀寫是極其頻繁的;動態站點也要不斷的載入 web 程序(php 等),一個請求甚至要讀

取十幾個文件才能處理完成,因此盡可能的提高硬碟速度和質量對提高 apache 的性能是有

積極意義的。

最後是 cpu 和網路,cpu 影響的是 web 程序執行速度,網路影響流量大小。

apache  的工作模式:

Apache HTTP 伺服器被設計為一個強大的、靈活的能夠在多種平台以及不同環境下工作的服

務器。這種模塊化的設計就叫做「多進程處理模塊」(Multi-Processing Mole,MPM),也叫

做工作模式。

Prefork 模式(一個非線程型的):

其主要工作方式是:當 Apache 伺服器啟動後,mpm_prefork 模塊會預先創建多個子進程(默

認為 5 個),每個子進程只有一個線程,當接收到客戶端的請求後,mpm_prefork 模塊再將

請求轉交給子進程處理,並且每個子進程同時只能用於處理單個請求。如果當前的請求數將

超過預先創建的子進程數時,mpm_prefork 模塊就會創建新的子進程來處理額外的請求。

Apache 總是試圖保持一些備用的或者是空閑的子進程用於迎接即將到來的請求。這樣客戶

端的請求就不需要在接收後等候子進程的產生。

由於在 mpm_prefork 模塊中,每個請求對應一個子進程,因此其佔用的系統資源相對其他

兩種模塊而言較多。不過 mpm_prefork 模塊的優點在於它的每個子進程都會獨立處理對應

的單個請求,這樣,如果其中一個請求出現問題就不會影響到其他請求。Prefork 在效率上

要比 Worker 要高,但是內存使用大得多不擅長處理高並發的場景。

Apache 在 prefork 工作模式下影響性能的重要參數說明

# prefork MPM

<IfMole mpm_prefork_mole>

StartServers 5

#apache 啟動時候默認開始的子進程數

MinSpareServers 5

#最小的閑置子進程數

MaxSpareServers 10

#最大的閑置子進程數

MaxRequestWorkers 250

#MaxRequestWorkers 設 置 了 允 許 同 時 的 最 大 接 入 請 求 數 量 。 任 何 超 過MaxRequestWorkers 限制的請求將進入等候隊列,在 apache2.3.1 以前的版本

MaxRequestWorkers 被稱為 MaxClients,舊的名字仍舊被支持。

MaxConnectionsPerChild 500

#設置的是每個子進程可處理的請求數。每個子進程在處理了「MaxConnectionsPerChild」

個請求後將自動銷毀。0 意味著無限,即子進程永不銷毀。雖然預設設為 0 可以使每個

子進程處理更多的請求,但如果設成非零值也有兩點重要的好處:1、可防止意外的內

存泄漏。2、在伺服器負載下降的時侯會自動減少子進程數。因此,可根據伺服器的負

載來調整這個值。在 Apache2.3.9 之前稱之為 MaxRequestsPerChild。

</IfMole>

注 1:MaxRequestWorkers 是這些指令中最為重要的一個,設定的是 Apache 可以同時處理

的請求,是對 Apache 性能影響最大的參數。如果請求總數已達到這個值(可通過 ps -ef|grep

http|wc -l 來確認),那麼後面的請求就要排隊,直到某個已處理請求完畢。這就是系統資源

還剩下很多而 HTTP 訪問卻很慢的主要原因。雖然理論上這個值越大,可以處理的請求就越

多,建議將初始值設為(以 Mb 為單位的最大物理內存/2),然後根據負載情況進行動態調整。

比如一台 4G 內存的機器,那麼初始值就是 4000/2=2000。

注 2:prefork 控制進程在最初建立「StartServers」個子進程後,為了滿足 MinSpareServers 設

置的需要創建一個進程,等待一秒鍾,繼續創建兩 個,再等待一秒鍾,繼續創建四個……如

此按指數級增加創建的進程數,最多達到每秒 32 個,直到滿足 MinSpareServers 設置的值為

止。這種模式 可以不必在請求到來時再產生新的進程,從而減小了系統開銷以增加性能。

MaxSpareServers 設置了最大的空閑進程數,如果空閑進程數大於這個 值,Apache 會自動 kill

掉一些多餘進程。這個值不要設得過大,但如果設的值比 MinSpareServers 小,Apache 會自

動把其調整為 MinSpareServers+1。如果站點負載較大,可考慮同時加大 MinSpareServers 和

MaxSpareServers。

注 3:ServerLimit 和 MaxClients(MaxRequestWorkers)有什麼區別呢?

是因為在 apache1 時代,控制最大進程數只有 MaxClients 這個參數,並且這個參數最大值為

256,並且是寫死了的,試圖設置為超過 256 是無效的,這是由於 apache1 時代的伺服器硬

件限制的。但是 apache2 時代由於伺服器硬體的升級,硬體已經不再是限制,所以使用

ServerLimit 這個參數來控制最大進程數,ServerLimit 值>=MaxClient 值才有效。ServerLimit

要放在 MaxClients 之前,值要不小於 MaxClients。

注 4:查看 Apache 載入的模塊

[root@www ~]#apachectl -t -D DUMP_MODULES



[root@www ~]# apachectl -M



[root@www ~]# apachectl –l (小寫 L,只顯示靜態模塊)

如何查看 Apache 的工作模式呢?可以使用 httpd -V 命令查看,另外使用 httpd -l 也可以查

看到

注 5:如何修改 prefork 參數和啟用 prefork 模式

1.[root@www ~]# vi /usr/local/http-2.4.23/conf/extra/httpd-mpm.conf

2.[root@www ~]# vi /usr/local/http-2.4.23/conf/httpd.conf

LoadMole mpm_prefork_mole moles/mod_mpm_prefork.so

Include conf/extra/httpd-mpm.conf

3 重啟httpd

Worker 模式(多線程多進程):

和 prefork 模式相比,worker 使用了多進程和多線程的混合模式,worker 模式也同樣會先預

派生一些子進程,然後每個子進程創建一些線程,同時包括一個監聽線程,每個請求過來會

被分配到一個線程來服務。線程比起進程會更輕量,因為線程是通過共享父進程的內存空間,

因此,內存的佔用會減少一些,在高並發的場景下會比 prefork 有更多可用的線程,表現會

更優秀一些;另外,如果一個線程出現了問題也會導致同一進程下的線程出現問題,如果是

多個線程出現問題,也只是影響 Apache 的一部分,而不是全部。由於用到多進程多線程,

需要考慮到線程的安全了,在使用 keep-alive 長連接的時候,某個線程會一直被佔用,即使

中間沒有請求,需要等待到超時才會被釋放(該問題在 prefork 模式下也存在)

總的來說,prefork 方式速度要稍高於 worker,然而它需要的 cpu 和 memory 資源也稍多於

woker。

Apache 在 worker 工作模式下影響性能的重要參數說明

# worker MPM

<IfMole mpm_worker_mole>

StartServers 3

#apache 啟動時候默認開始的子進程數

MinSpareThreads 75

#最小空閑數量的工作線程

MaxSpareThreads 250

#最大空閑數量的工作線程

ThreadsPerChild 25

#每個子進程產生的線程數量

MaxRequestWorkers 400

#與 prefork 模式相同

MaxConnectionsPerChild 0

#與 prefork 模式相同

</IfMole>

注 1:Worker 由主控制進程生成「StartServers」個子進程,每個子進程中包含固定的

ThreadsPerChild 線程數,各個線程獨立地處理請求。同樣, 為了不在請求到來時再生成線

程,MinSpareThreads 和 MaxSpareThreads 設置了最少和最多的空閑線程數;

而 MaxRequestWorkers 設置了同時連入的 clients 最大總數。如果現有子進程中的線程總數不

能滿足負載,控制進程將派生新的子進程

MinSpareThreads 和 MaxSpareThreads 的最大預設值分別是 75 和 250。這兩個參數對 Apache

的性能影響並不大,可以按照實際情況相應調節 。

注 2:ThreadsPerChild 是 worker MPM 中與性能相關最密切的指令。ThreadsPerChild 的最大

預設值是 64,如果負載較大,64 也是不夠的。這時要顯式使用 ThreadLimit 指令,它的最大

預設值是 20000。

注 3:Worker 模式下所能同時處理的請求總數是由子進程總數乘以 ThreadsPerChild 值決定

的,應該大於等於 MaxRequestWorkers。如果負載很大,現有的子進程數不能滿足時,控制

進程會派生新的子進程。默認最大的子進程總數是 16,加大時 也需要顯式聲明 ServerLimit

(系統配置的最大進程數量,最大值是20000)。需要注意的是,如果顯式聲明了 ServerLimit,

那麼它乘以 ThreadsPerChild的值必須大於等於MaxRequestWorkers,而且MaxRequestWorkers

必須是 ThreadsPerChild 的整數倍,否則 Apache 將會自動調節到一個相應值。

注 4:進程與線程的區別

線程是指進程內的一個執行單元,也是進程內的可調度實體.

與進程的區別:

(1)地址空間:進程內的一個執行單元;進程至少有一個線程;它們共享進程的地址空間;而進程

有自己獨立的地址空間;

(2)資源擁有:進程是資源分配和擁有的單位,同一個進程內的線程共享進程的資源

(3)線程是處理器調度的基本單位,但進程不是.

(4)二者均可並發執行.

進程和線程都是由操作系統所體會的程序運行的基本單元,系統利用該基本單元實現系統對

應用的並發性。

進程和線程的區別在於:

簡而言之,一個程序至少有一個進程,一個進程至少有一個線程.

線程的劃分尺度小於進程,使得多線程程序的並發性高。

另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程

序的運行效率。

Event 模式:

這是 Apache 最新的工作模式,是 worker 模式的變種,它把服務進程從連接中分離出來,一

worker 模式不同的是在於它解決了 keep-alive 長連接的時候佔用線程資源被浪費的問題,在

event 工作模式中,會有一些專門的線程用來管理這些 keep-alive 類型的線程,當有真實請

求過來的時候,將請求傳遞給伺服器的線程,執行完畢後,又允許它釋放。這增強了在高並

發場景下的請求處理。event 模式不能很好的支持 https 的訪問(HTTP 認證相關的問題)。

② apache設置靜態文件緩存影響cookie

Cookie的主要內容包括名字,值,過期時間,路徑和域,路徑和域共同構成了cookie的作用范圍,相當於一個key-value的方式存在於客戶端。根據有無設置過期時間可分為 會話Cookie和持久Cookie,不設置過期時間,則是會話Cookie,這個Cookie的生命周期為瀏覽器會話期間,關閉瀏覽器窗口,cookie就消失,若設置了過期時間,瀏覽器就會把cookie保存到硬碟上,關閉後再次打開瀏覽器,這些cookie仍然有效直到超過設定的過期時間。存儲在硬碟上的cookie可以在瀏覽器的不同進程間共享。

③ 如何在 apache 中設置緩存有效時間

右擊該圖標,會彈出PowerStrip的工作主萊單,然後選中「Performance profiles- Configure

④ 如何在 apache 中設置緩存有效時間

在 http 報文頭中,與緩存時間有關的兩個欄位是 Expires 以及 Cache-Control 中的 max-age,Expires 設定了一個緩存的過期時間,而 max-age 則設定了一個緩存有效時間(單位秒),通常情況下,兩者可以相互推得。(詳細參考 瀏覽器緩存機制淺析)

還是用 WampServer 舉例。我們在 www 文件夾下新建個 index.html 頁面,在瀏覽器中打開它,得到的 http 響應頭如下:

⑤ 誰熟悉APACHE的緩存配置

Apache中關於頁面緩存的設置

Expires、Cache-Control、Last-Modified、
ETag是RFC
2616(HTTP/1.1)協議中和網頁緩存相關的幾個欄位。前兩個用來控制緩存的失效日期,後兩個用來驗證網頁的有效性。要注意的是,
HTTP/1.0有一個功能比較弱的緩存控制機制:Pragma,使用HTTP/1.0的緩存將忽略Expires和Cache-Control頭。我們
這里以Apache2.0伺服器為例,只討論HTTP/1.1協議。

Expires

Expires欄位聲明了一個網頁或URL地址不再被瀏覽器緩存的時間,一旦超過了這個時間,瀏覽器都應該聯系原始伺服器。RFC告訴我們:「由於推斷的失效時間也許會降低語義透明度,應該被謹慎使用,同時我們鼓勵原始伺服器盡可能提供確切的失效時間。」

對於一般的純靜態頁面,如html、gif、jpg、css、js,默認安裝的Apache伺服器,不會在響應頭添加這個欄位。Firefox瀏覽

器接受到相應後,如果發現沒有Expires欄位,瀏覽器根據文件的類型和「Last-Modified」欄位來推斷出一個合適的失效時間,並存儲在客戶
端。推測出的時間一般是接受到響應時間後的三天左右。

Apache的expires_mole模塊可以在Http響應頭部自動加上Expires欄位。在Apache的httpd.conf文件中進行如下配置:

#啟用expires_mole模塊
LoadMole expires_mole moles/mod_expires.so
# 啟用有效期控制
ExpiresActive On
# GIF有效期為1個月
ExpiresByType image/gif A2592000
# HTML文檔的有效期是最後修改時刻後的一星期
ExpiresByType text/html M604800
#以下的含義類似
ExpiresByType text/css 「now plus 2 month」
ExpiresByType text/js 「now plus 2 day」
ExpiresByType image/jpeg 「access plus 2 month」
ExpiresByType image/bmp 「access plus 2 month」
ExpiresByType image/x-icon 「access plus 2 month」
ExpiresByType image/png 「access plus 2 month」

對於動態頁面,如果在頁面內部沒有通過函數強制加上Expires,例如header(」Expires: 」 . gmdate(」D, d M
Y H:i:s」) . 」 GMT」),Apache伺服器會把Wed, 11 Jan 1984 05:00:00 GMT
作為Expires欄位內容,返回給瀏覽器。即認為動態頁面總是失效的。而瀏覽器仍然會保存已經失效的動態頁面。

可以發現Firefox瀏覽器總是緩存所有頁面,不管失效、不失效還是沒有聲明失效時間。即使緩存中聲明了一個網頁的實效日期是1970-01-
01 08:00:00,瀏覽器仍然會發送該文件在緩存中的Last-Modified和ETag欄位。
如果在伺服器端驗證通過,返回304狀態,瀏覽器就還會使用此緩存。

Cache-Control

Cache-Control欄位中可以聲明多些元素,例如no-cache, must-revalidate,
max-age=0等。這些元素用來指明頁面被緩存最大時限,如何被緩存的,如何被轉換到另一個不同的媒介,以及如何被存放在持久媒介中的。但是任何一個
Cache-Control指令都不能保證隱私性或者數據的安全性。「private」和「no-store」指令可以為隱私性和安全性方面提供一些幫
助,但是他們並不能用於替代身份驗證和加密

Apache的mod_cern_meta模塊允許文件級Http響應頭部的控制,同時它也可以配置Cache-Control頭(或任何其他頭)。響應頭文件是放在原始目錄的子目錄中,根據原始文件名所命名的一個文件。具體用法請參閱Apache的官方網站。

其中Cache-Control :
max-age表示失效日期。如果沒有啟動mod_cern_meta模塊,Apache伺服器會把Expires欄位中的日期換算成以秒為單位的一個
delta值,賦值給max-age。如果啟動mod_cern_meta模塊,並且配置了max-age值,Apache會將這個覆蓋Expires字
段。同時,max-age隱含了Canche-Control: public。這樣瀏覽器接受到的Cache-Control :
max-age和Expires值就是一致的。

如果失效日期Cache-Control : max-ag=0或者是負值,瀏覽器會在對應的緩存中把Expires設置為1970-01-01 08:00:00。

Last-Modified

Last-Modified和ETag是條件請求(Conditional
Request)相關的兩個欄位。如果一個緩存收到了針對一個頁面的請求,它發送一個驗證請求詢問伺服器頁面是否已經更改,在HTTP頭裡面帶上」
ETag」和」If Modify Since」頭。伺服器根據這些信息判斷是否有更新信息,如果沒有,就返回HTTP 304(Not
Modify);如果有更新,返回HTTP 200和更新的頁面內容,並且攜帶新的」ETag」和」Last-Modified」。

使用這個機制,能夠避免重復發送文件給瀏覽器,不過仍然會產生一個HTTP請求。

一般純靜態頁面本身都會有Last-Modified信息,Apache伺服器會讀取頁面文件中的Last-Modified信息,並添加到http響應頭部。

對於動態頁面,如果在頁面內部沒有通過函數強制加上Last-Modified,例如header(」Last-Modified: 」 .
gmdate(」D, d M Y H:i:s」) . 」
GMT」),Apache伺服器會把當前時間作為Last-Modified,返回給瀏覽器。

無論是純靜態頁面還是動態頁面,Firefox瀏覽器巧妙地按照接受到伺服器響應的時間設置緩存頁面的Last-Modified,而不是按照http響應頭部中的Last-Modified欄位。

ETag

既然有了Last-Modified,為什麼還要用ETag欄位呢?因為如果在一秒鍾之內對一個文件進行兩次更改,Last-Modified就會不正確。因此,HTTP/1.1利用Entity Tag頭提供了更加嚴格的驗證。

Apache伺服器默認情況下,會對所有的靜態、動態文件的響應頭添加ETag欄位。

在Apache的httpd.conf文件中可以通過FileETag指令配置該選項。FileETag指令配置了當文檔是基於一個文件時用以創建
Etag(entity tag)響應頭的文件的屬性。在Apache
1.3.22及以前,ETag的值是對文件的索引節(INode),大小(Size)和最後修改時間(MTime)進行Hash後得到的。
如果一個目錄的配置包含了『FileETag INode MTime Size』而其一個子目錄包含了『FileETag
-INode』那麼這個子目錄的設置(並會被其下任何沒有進行覆蓋的子目錄繼承)將等價於『FileETag MTime Size』。

在多台負載平衡的伺服器環境下,同一個文件會有不同的etag或者文件修改日期,瀏覽器每次都會重新下載。設置『FileETag None』可以使響應頭不再包含ETag欄位。

⑥ 如何設置Apache伺服器的緩沖區大小

你說的是緩存大小吧

Apache的緩存方式有兩種,一種是基於硬碟文件的緩存,由mod_disk_cache實現,另一種是使用內存緩存,由mod_mem_cache實現,不過它們都是依賴mod_cache模塊的,mod_cache模塊提供了一些緩存配置的指令供它們使用,而mod_file_cache模塊是搭配mod_mem_cache模塊使用的,下面分別進行介紹。


1、基於硬碟文件的緩存
基於硬碟文件存儲的緩存由mod_disk_cache模塊實現,先看個簡單的配置例子:
<IfMolemod_cache.c>
CacheDefaultExpire86400
<IfMolemod_disk_cache.c>
CacheEnabledisk/
CacheRoot/tmp/apacheCache
CacheDirLevels5
CacheDirLength4
CacheMaxFileSize1048576
CacheMinFileSize10
</IfMole>
</IfMole>


把上面的配置加到Apache的httpd.conf文件中,如果緩存相關的模塊都已經編譯進了Apache的核心,則無需載入模塊,直接就能使用上面的指令。指令的詳細說明如下:
CacheDefaultExpire:設定緩存過期的時間(秒),默認是1小時,只有當緩存的文檔沒有設置過期時間或最後修改時間時這個指令才會生效
CacheEnable:啟用緩存,第1個參數是緩存類弄,這里當然是disk了,第2個參數是緩存路徑,指的是url路徑,這里是緩存所有的東西,直接寫上「/」即可,如「/docs」則只緩存/docs下的所有文件
CacheRoot:緩存文件所在的目錄,運行Apache的用戶(如daemon或nobody)要能對其進行讀寫,如果不清楚的話可以直接設置成777,請手動建立該目錄並設置好訪問許可權
CacheDirLevels:緩存目錄的深度,默認是3,這里設置為5
CacheDirLength:緩存目錄名的字元長度,默認是4,這里設置為5
CacheMaxFileSize和CacheMaxFileSize:緩存文件的最大值和最小值(byte),當超過這個范圍時將不再緩存,這里設置為1M和10bytes
基於硬碟文件存儲的文件基本上就這些內容,設置好後重啟Apache應該就能使用了。一切正常的話,可以在緩存目錄下看到Apache自動建立的一些目錄和緩存的數據文件。
2、基於內存的緩存
基於內存的緩存主要由mod_mem_cache模塊實現,還是看個簡單的配置吧,這樣比較直觀:-)
<IfMolemod_cache.c>
<IfMolemod_mem_cache.c>
CacheEnablemem/
MCacheMaxObjectCount20000
MCacheMaxObjectSize1048576
MCacheMaxStreamingBuffer65536
MCacheMinObjectSize10
MCacheRemovalAlgorithmGDSF
MCacheSize131072
</IfMole>
</IfMole>
簡單說一下上面一些指令的意思:
CacheEnable:啟用緩存,使用基於內存的方式存儲
MCacheMaxObjectCount:在內存中最多能存儲緩存對象的個數,默認是1009,這里設置為20000
MCacheMaxObjectSize:單個緩存對象最大為1M,默認是10000bytes
MCacheMaxStreamingBuffer:在緩沖區最多能夠放置多少的將要被緩存對象的尺寸,這里設置為65536,該值通常小於100000或MCacheMaxObjectSize設置的值
MCacheMinObjectSize:單個緩存對象最小為10bytes,默認為1bytes
MCacheRemovalAlgorithm:清除緩存所使用的演算法,默認是GDSF,還有一個是LRU,可以查一下Apache的官方文檔,上面有些介紹
MCacheSize:緩存數據最多能使用的內存,單位是kb,默認是100kb,這里設置為128M
保存重啟Apache基於內存的緩存系統應該就能生效了,根據需要可以使基於內存的存儲或硬碟文件的存儲方式一起使用,只要指明不同的URL路徑即可。
3、注意事項
使用緩存需要注意如下事項:
要使用緩存,必須使用指令CacheEnable啟用它,目前可用的緩存類型為disk或mem,禁止緩存可以使用CacheDisable,如CacheDisable/private
待緩存的URL返回的狀態值必須為:200、203、300、301或410
URL的請求方式必須是GET方式
發送請求時,頭部中包含「Authorization:」的字元串時,返回的內容將不會被緩存
URL包含查詢字元串,如問號?後的那些東西,除非返回的內容包含「Expires:」,否則不會被緩存
如果返回的狀態值是200,則返回的頭部信息必須包含以下的一種才會被緩存:Etag、Last-Modified、Expires,除非設置了指令CacheIgnoreNoLastModOn
如果返回內容的頭部信息「Cache-Control:」中包含「private」,除非設置了指令CacheStorePrivateOn,否則不會被緩存
如果返回內容的頭部信息「Cache-Control:」中包含「no-sotre」,除非設置了指令CacheStoreNoStoreOn,否則不會被緩存
如果返回內容的頭部信息「Vary:」中包含了「*」,不會被緩存

⑦ apache的httpd.conf文件中如果不設置cache的相關內容,那麼它的默認緩存時間是多少

1個小時。

⑧ 如何在 Apache 中設置緩存有效時間

Apache 的緩存方式有兩種,一種是基於硬碟文件的緩存,由 mod_disk_cache 實現,另一種是使用內存緩存,由 mod_mem_cache 實現,不過它們都是依賴 mod_cache 模塊的,mod_cache 模塊提供了一些緩存配置的指令供它們使用,而 mod_file_cache 模塊是搭配 mod_mem_cache 模塊使用的。

⑨ 北大青鳥設計培訓:PHP應用中常用的9大緩存技術

一、全頁面靜態化緩存也就是將頁面全部生成html靜態頁面,用戶訪問時直接訪問的靜態頁面,而不會去走php伺服器解析的流程。
此種方式,在CMS系統中比較常見,比如dedecms;一種比較常用的實現方式是用輸出緩存:Ob_start()******要運行的代碼*******$content=Ob_get_contents();****將緩存內容寫入html文件*****Ob_end_clean();二、數據緩存顧名思義,就是緩存數據的一種方式;比如,商城中的某個商品信息,當用商品id去請求時,就會得出包括店鋪信息、商品信息等數據,此時就可以將這些數據緩存到一個php文件中,文件名包含商品id來建一個唯一標示;下一次有人想查看這個商品時,首先就直接調這個文件裡面的信息,而不用再去資料庫查詢;其實緩存文件中緩存的就是一個php數組之類;Ecmall商城系統裡面就用了這種方式;三、查詢緩存其實這跟數據緩存是一個思路,就是根據查詢語句來緩存;將查詢得到的數據緩存在一個文件中,下次遇到相同的查詢時,就直接先從這個文件裡面調數據,不會再去查資料庫;但此處的緩存文件名可能就需要以查詢語句為基點來建立唯一標示;按時間變更進行緩存就是對於緩存文件您需要設一個有效時間,在這個有效時間內,相同的訪問才會先取緩存文件的內容,但是超過設定的緩存時間,就需要重新從資料庫中獲取數據,並生產最新的緩存文件;比如,我將我們商城的首頁就是設置2個小時更新一次。
四、頁面部分緩存該種方式,是將一個頁面中不經常變的部分進行靜態緩存,而經常變化的塊不緩存,最後組裝在一起顯示;可以使用類似於ob_get_contents的方式實現,也可以利用類似ESI之類的頁面片段緩存策略,使其用來做動態頁面中相對靜態的片段部分的緩存。
該種方式可以用於如商城中的商品頁;五、Opcode緩存首先php代碼被解析為Tokens,然後再編譯為Opcode碼,最後執行Opcode碼,返回結果;所以,對於相同的php文件,第一次運行時可以緩存其Opcode碼,下次再執行這個頁面時,直接會去找到緩存下的opcode碼,直接執行最後一步,而不再需要中間的步驟了。
比較知名的是XCache、TurckMMCache、PHPAccelerator等。
六、按內容變更進行緩存這個也並非獨立的緩存技術,需結合著用;就是當資料庫內容被修改時,即刻更新緩存文件;比如,一個人流量很大的商城,商品很多,商品表必然比較大,這表的壓力也比較重;我們就可以對商品顯示頁進行頁面緩存;當商家在後台修改這個商品的信息時,點擊保存,我們同時就更新緩存文件;那麼,買家訪問這個商品信息時,實際問的是一個靜態頁面,而不需要再去訪問資料庫;試想,如果對商品頁不緩存,那麼每次訪問一個商品就要去資料庫查一次,如果有10萬人在線瀏覽商品,那伺服器壓力就大了;七、內存式緩存提到這個,可能大家想到的首先就是Memcached;memcached是高性能的分布式內存緩存伺服器。
一般的使用目的是,通過緩存資料庫查詢結果,減少資料庫訪問次數,以提高動態Web應用的速度、提高可擴展性。
它就是將需要緩存的信息,緩存到系統內存中,需要獲取信息時,直接到內存中取;比較常用的方式就是key_>value方式;connect($memcachehost,$memcacheport)ordie("Couldnotconnect");$memcache->set('key','緩存的內容');$get=$memcache->get($key);//獲取信息?>八、apache緩存模塊apache安裝完以後,是不允許被cache的。
廣州IT培訓http://www.kmbdqn.cn/認為如果外接了cache或squid伺服器要求進行web加速的話,就需要在htttpd.conf里進行設置,當然前提是在安裝apache的時候要激活mod_cache的模塊。

熱點內容
照片視頻加密 發布:2024-10-05 23:58:58 瀏覽:477
北京java培訓班多少錢 發布:2024-10-05 23:49:03 瀏覽:813
subversion源碼安裝 發布:2024-10-05 23:48:17 瀏覽:120
ipad文件怎麼解壓縮 發布:2024-10-05 23:06:28 瀏覽:165
存儲伺服器主控晶元 發布:2024-10-05 23:04:33 瀏覽:571
php學徒 發布:2024-10-05 23:04:30 瀏覽:440
活字格手機端清除緩存了什麼辦 發布:2024-10-05 23:03:23 瀏覽:872
阿杜訪問 發布:2024-10-05 22:44:23 瀏覽:602
我的世界怎麼在別的伺服器開掛 發布:2024-10-05 22:31:14 瀏覽:295
下沉演算法 發布:2024-10-05 21:59:43 瀏覽:997