parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Как хранить файлы подобно кешу в squid?

dev 20.02.2006 03:15 / 20.02.2006 03:19

Задача: хранить много бинарных файлов в базе и выдавать их юзеру. Чтобы это более-менее шустро работало, сами файлы собираюсь хранить на диске, а в базе только ссылку на них.
Вопрос такой - как хранить на диске сами файлы? Просто ^math:md5[$filename] и все в одну директорию? Но такой вариант не подходит(?), если файлов будет много.
Хотелось бы не изобретать велосипед, а сделать что-то подобное кешу в squid, msie, etc.

Механизм выдачи файлов пользователю мне представляется таким:
RewriteRule	^files/(+*)	/get_file.html?name=$1
В условном get_file.html примерно такая конструкция:
$real_link[^get_object_url[$form:name]]

^if($real_link){
	$response:location[$real_link]
}{
	^show_error_message[]
}
Но с большой вероятностью, может потребоваться разделение/ограничение доступа, а это значит, что файлы с веба нужно убирать.

Т.е. придется использовать что-то вроде этого:
^try{
	$response:body[^get_object[$form:name]]
}{
	^if($exception.type eq object.miss){ 
		$exception.handled(1) 
		^show_error_message[]
	}
}
Такое решение, насколько я понимаю, будет очень серьезно нагружать память.

Если ли какие-то иные варианты решения задачи?