2012-03-15 115 views
1

我有一個腳本,生成一個非常github-gist像代碼段代碼突出顯示。緩慢讀取緩存文件在php

由於突出顯示需要一點時間才能渲染長文件,因此我將它們作爲緩存文件存儲在服務器上,如果緩存文件存在,我使用file_get_contents來抓取它並將其吐出。

我剛剛發佈了其中一段較長的剪輯(大約257K代碼),緩存文件花費了整整一秒的時間才加載。

對於文件大小這似乎很長時間。我剛剛檢查過,50K文件大約需要.4到0.5秒。

什麼可能會導致這種慢讀取速度的想法?

+5

你能展示一些代碼嗎? – 2012-03-15 12:43:48

回答

1

如果可以,請嘗試使用客戶端突出顯示。 google-code-prettify看起來不錯。

+0

我前一陣子看着這個。當時很難找到像Arduino和處理這樣的代碼突出顯示的代碼。我使用geshi,因此製作熒光筆相當容易。我再看看這個。謝謝。 – 2012-03-16 02:36:13

1

您是否嘗試過使用readfile而不是file_get_contents?這可能會讓你獲得更好的結果。

+0

我做到了,速度幾乎沒有了。就像快5%一樣。 – 2012-03-16 02:36:51

1

您可能想嘗試使用X-Sendfile。它內置在lighttpdnginx中,或作爲module for Apache提供。

基本上你只是要求網絡服務器提供一個自定義的靜態文件,而不是將其加載到內存中,然後將其發送出去。

+0

如果他正在閱讀的文件應該嵌入其他生成的HTML中,則這將不起作用。 – chiborg 2012-03-16 15:10:54

+0

當然不會。但是你可以緩存整個頁面(假設你不爲每個用戶量身定製)。 – CAFxX 2012-03-16 16:05:07