當前位置:首頁 » 硬碟大全 » apache緩存
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

apache緩存

發布時間: 2022-02-14 01:22:08

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

你好,
在 apache 中設置緩存有效時間方法:啟動和配置 Expires
打開 httpd.conf 文件(比如我的是在 F:\wamp\bin\apache\Apache2.2.17\conf 下),找到這一行:
復制代碼#LoadMole expires_mole moles/mod_expires.so

去掉注釋(井號),然後再加上這么兩行,再重啟下apache,就 ok 了:
復制代碼
ExpiresActive On
ExpiresByType text/html A1000

我們看到 max-age 欄位也出現在了響應頭中,其實它是根據 Expires 的設置自動填充的。

其他設置類似:復制代碼#啟用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 months"
ExpiresByType text/js "now plus 2 days"
ExpiresByType image/jpeg "access plus 2 months"
ExpiresByType image/bmp "access plus 2 months"
ExpiresByType image/x-icon "access plus 2 months"
ExpiresByType image/png "access plus 2 months"

2. phpstudy怎麼清除apache緩存

#ErrorLog "logs/error.log"
#CustomLog "logs/access.log" common

修改在apache目錄下的httpd.conf文件,注釋上面的兩行就行了。

3. php 怎麼清理 apache緩存

一種是對 頁面結果的緩存 應用伺服器級別的 軟體如 squid

一種是 內存級別的 一般是對 php 頻繁調用的並且如果每次查詢會消耗大量資源的數據 軟體有 memcached

一種是 對php 程序進行優化編碼的緩存 如 apache 裡面的 apc, eAccelerator, XCache 等

還有一種就是文件緩存 這種一般是 用php自己實現的 沒什麼可說的.

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

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

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

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

1個小時。

6. 誰熟悉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欄位。

7. 關於apache的緩存

B伺服器,但其豐富的功能對於一個新手來說往往不知道從何下手。我個人感覺Apache的設計充分體現了模塊化設計的優勢,通過在動態模塊載入(DSO)模式下的安裝,任何子應用模塊都可以通過配置文件的簡單修改進行積木式的靈活配置。安裝的過程可以從簡單的靜態html服務開始,一個模塊一個模塊的學習使用。從單純的HTML靜態服務(core),到復雜的動態頁面服務(core + php, core + resin, core + php + mod_gzip, core + resin + mod_expire)。

本文主要從簡化安裝==>性能調優==>維護方便的角度,介紹了WEB服務的規劃、HTTPD安裝/應用模塊配置、升級/維護等過程。讓Apache和PHP,Resin等應用模塊的獨立升級,完全互不影響。

WEB應用容量規劃:根據硬體配置和WEB應用的特點進行WEB服務的規劃及一些簡單的估算公式;
Apache安裝過程:apache的通用的簡化安裝選項,方便以後的應用的模塊化配置;
修改 HARD_SERVER_LIMIT:
vi /path/to/apache_src/src/include/httpd.h
#define HARD_SERVER_LIMIT 2560 <===將原來的 HARD_SERVER_LIMIT 256 後面加個「0」
apache編譯:
./configure --prefix=/home/apache --enable-shared=max --enable-mole=most
可選應用模塊/工具的安裝:php resin mod_gzip mod_expire及各個模塊之間的配合;
mod_php安裝:./configure --with-apxs=/home/apache/bin/apxs --enable-track-vars --with-mysql
mod_resin安裝:./configure --with-apxs=/home/apache/bin/apxs
mod_gzip安裝:修改Makefile中的 apxs路徑:然後make make install
工具:日誌輪循工具cronolog安裝:
升級/維護:看看通用和模塊化的安裝過程如何簡化了日常的升級/維護工作;
按照以上的方法:系統管理員和應用管理員的職責可以清楚的分開,互相獨立。
系統安裝:系統管理員的職責就是安裝好一台DSO模式的Apache,然後COLON即可,
應用安裝:由應用管理員負責具體應用所需要的模塊,比如PHP Resin等,並設置httpd.conf中相關的配置。
系統升級:系統管理員:升級操作系統/升級Apache
應用升級:應用管理員:升級應用模塊,PHP Resin等。
WEB應用的容量規劃

Apache主要是一個內存消耗型的服務應用,我個人總結的經驗公式:
apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2
apache_max_process = apache_max_process_with_good_perfermance * 1.5

為什麼會有一個apache_max_process_with_good_perfermance和apache_max_process呢?原因是在低負載下系統可以使用更多的內存用於文件系統的緩存,從而進一步提高單個請求的響應速度。在高負載下,系統的單個請求響應速度會慢不少,而超過 apache_max_process,系統會因為開始使用硬碟做虛擬內存交換空間而導致系統效率急劇下降。此外,同樣的服務:2G內存的機器的 apache_max_process一般只設置到1G內存的1.7倍,因為Apache本身會因為進程過多導致性能下降。

8. apache緩存怎麼清理

這個沒有一個固定的方法啊。畢竟不同的PHP程序有不同的緩存機制。
比如discuz吧,直接在後台——系統工具——更新緩存就可以了。

smarty是個模板生成機制,用於分離php和html,如果你的站點本來就沒有smarty,就不會有smarty生成的緩存,也不可能清除你要清除的緩存。

9. 如何設置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:」中包含了「*」,不會被緩存