我有一個名爲main.css.php的php文件,它收集多個css文件並將它們輸出爲一個大的css文件。它收集的css文件的數量可以從1到10。該代碼是這樣的:什麼是緩存(自動版本)通過組合多個css文件創建的php文件的有效方法?
header('Content-type: text/css');
header('Cache-Control: max-age=31536000');
ob_start("compress");
function compress($buffer) {
/* remove comments */
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
/* remove tabs, spaces, newlines, etc. */
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);
return $buffer;
}
// include css files
foreach ($css_files as $path) {
if (file_exists($path)) {
include_once($path);
}
}
ob_end_flush();
所以我的那部分排序的,但現在我不知道如何使用的方式,讓我更新緩存如果任何原始css文件的更改進行緩存。作爲this answer建議我要做的事情是這樣的:不過,我不能用這個阿帕奇重寫規則
$cache = "";
foreach ($css_files as $path) {
$cache.= filemtime($path);
}
...
echo "<link rel='stylesheet' href='/css/base.{$cache}.css'>";
:
RewriteEngine on
RewriteRule ^(.*)\.[\d]{10}\.(css|js)$ $1.$2 [L]
因爲我不知道在$緩存有多長因爲它將包含多個unix時間戳。
摘要
我需要多個CSS文件合併成發送到瀏覽器中使用CSS頭一個PHP文件。然後我需要正確緩存這個文件,但是如果任何一個原始的css文件發生變化,我可以通過這種方式來更新緩存。
任何意見,建議,或更好的方式去了解我在做什麼,將不勝感激。
我對哈希算法不太熟悉,但看起來好像會起作用,會給它一個鏡頭。 – joshhunt 2014-09-11 04:47:23