Я работаю с некоторыми дизайнерами, редактирующими файлы CSS, используемые некоторыми веб-представлениями в приложении. Они жаловались, что изменения в таблицах стилей не были отражены в приложении, и небольшая отладка с Чарльзом подтвердила, что они не были перезагружены. Я пытался, казалось бы, каждый ответ на StackOverflow, но безрезультатно.
То, что в конце концов уловило, было создание подкласса NSURLCache
, который переопределяет -cachedResponseForRequest:
- (NSCachedURLResponse*)cachedResponseForRequest:(NSURLRequest*)request
{
if ([[[[request URL] absoluteString] pathExtension] caseInsensitiveCompare:@"css"] == NSOrderedSame)
return nil;
else
return [super cachedResponseForRequest:request];
}
Я затем устанавливаю его с разумной памятью и емкостью диска:
NSURLCache *currentCache = [NSURLCache sharedURLCache];
NSString *cachePath = [cachesDirectory() stringByAppendingPathComponent:@"DebugCache"];
DebugURLCache *cache = [[DebugURLCache alloc] initWithMemoryCapacity:currentCache.memoryCapacity diskCapacity:currentCache.diskCapacity diskPath:cachePath];
[NSURLCache setSharedURLCache:cache];
[cache release];
(cachesDirectory()
- это функция, которая возвращает /Library/Caches
в каталоге приложения на iOS).
Как вы можете сказать по названию, я использую это только в конфигурации отладки (используя настройку сборки дополнительных флагов препроцессора и некоторые #ifdefs).
Похоже, вы устанавливаете качество на 100%. Это означает, что сжатия не будет.
Если вы измените уровень сжатия (80, 50 и т. Д.), И вы не удовлетворены качеством, вы можете попробовать другую библиотеку изображений. LEADTools имеет хороший (платный) движок.
ОБНОВЛЕНИЕ: как заметил комментатор, 100% качество все же не означает сжатие без потерь при использовании JPEG. Загрузка изображения, выполнение с ним каких-либо действий и последующее его сохранение в конечном итоге приведет к ухудшению качества изображения. Если вам нужно изменить и сохранить изображение без потери каких-либо данных, вам необходимо использовать формат без потерь, такой как TIFF, PNG или BMP. Я бы выбрал сжатый TIFF (поскольку он по-прежнему без потерь, даже если он сжат) или PNG.
Сжатие и качество всегда являются компромиссом.
JPEG всегда будет с потерями.
Вы можете рассмотреть возможность использования PNG и минимизировать файлы с помощью PNGCrush или PNGauntlet
Он должен сохранить файл, как его исходное качество и размер
Это не имеют большой смысл. Когда вы используете сжатие с потерями, вы по определению потеряете некоторую информацию. Смысл сжатия изображения - уменьшить размер файла. Если вам нужно высокое качество, а jpeg не делает этого за вас, возможно, вам придется использовать какой-то тип сжатия без потерь, но размеры ваших файлов не сильно уменьшатся. Вы всегда можете попробовать использовать «стандартную» библиотеку для сжатия в jpeg ( libjpeg) и посмотреть, дает ли это какие-либо другие результаты (я сомневаюсь, но я не знаю, что .NET использует под капюшон.)
Сжатие формата jpeg по самой своей природе снижает качество. Возможно, вам стоит изучить сжатие файлов, например #ziplib . Вы можете получить приемлемое сжатие для группы файлов.