Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / handler кеширование картинки / 7 сообщений из 7, страница 1 из 1
29.10.2020, 23:30
    #40013271
zizi_top
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
handler кеширование картинки
хендлер генерит картинку на диск,затем ее отдает
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
namespace psd
{
    /// <summary>
    /// Summary description for img
    /// </summary>
    public class img : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            
            var Params = context.Request.Params;
            var notFoundPath = context.Server.MapPath("~/img/404.png");
            if (Params["psd"] == null)
            {
                this.writeImage(notFoundPath);
                return;
            }

            var psdPath = context.Server.MapPath("~/psd_files/" + Params["psd"]);
            
            var imgOutPath = this.generateImageOutPath(Params["psd"], Params["text"]);

            
            if (File.Exists(imgOutPath))
            {
                //context.Response.WriteFile(imgOutPath);
                //context.Response.StatusCode = 304;

                //context.Response.StatusCode = 304;
                context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(5));
                context.Response.Cache.SetCacheability(HttpCacheability.Public);
                //context.Response.Cache.SetValidUntilExpires(false);

                this.writeImage(imgOutPath);
                return;
            }
            else if (File.Exists(psdPath))
            {
                this.generateImage(psdPath, imgOutPath, Params["text"]);
                //context.Response.WriteFile(imgOutPath);
                this.writeImage(imgOutPath);
                return;
            }
            else
            {
                this.writeImage(notFoundPath);
                return;
            }
        }

        public bool IsReusable
        {
            get
            {
                return true;
            }
        }

        public void writeImage(String path)
        {
            HttpContext.Current.Response.ContentType = "image/png";
            //HttpContext.Current.Response.AddHeader("content-disposition", "inline; filename=" + Path.GetFileName(path));
            //HttpContext.Current.Response.StatusCode = 304;
            // HttpContext.Current.Response.Cache.SetExpires(DateTime.Now.Add(new TimeSpan(24, 0, 0)));
            //HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Public);
            //HttpContext.Current.Response.Cache.SetValidUntilExpires(false);

            HttpContext.Current.Response.WriteFile(path);
            HttpContext.Current.Response.Flush();
            HttpContext.Current.Response.Close();
        }

    }
}



пытаюсь настроить кеширование,но не получается,гугление не помогло
менял заголовки,указывал статус код ответа 304,но не помогает
время повторной отдачи больше 1 секунды
сервак работает через cloudflare,по идее он должен кешировать статику
как исправить?
...
Рейтинг: 0 / 0
30.10.2020, 07:28
    #40013324
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
handler кеширование картинки
zizi_top
пытаюсь настроить кеширование,но не получается


под "не получается" -- что имеется в виду?
что ожидается?
как именно не оправдываются ожидания?
...
Рейтинг: 0 / 0
30.10.2020, 07:50
    #40013326
zizi_top
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
handler кеширование картинки
повторно картинка генерится больше 1 секунды
...
Рейтинг: 0 / 0
30.10.2020, 16:45
    #40013528
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
handler кеширование картинки
zizi_top,

отдавайте ETag картинки, проверяйте запрос по Etag-у, если он совпадает, значит возвращаете 304
...
Рейтинг: 0 / 0
01.11.2020, 14:22
    #40013936
zizi_top
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
handler кеширование картинки
что лучше использовать etag или lastmodify?
по сути это одно и тоже. etag по сути это хеш от lastmodify date у файла
или сразу 2 использовать?
...
Рейтинг: 0 / 0
01.11.2020, 15:05
    #40013949
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
handler кеширование картинки
zizi_top
что лучше использовать etag или lastmodify?
по сути это одно и тоже. etag по сути это хеш от lastmodify date у файла
или сразу 2 использовать?

Лучше сразу два, потому что, вообще говоря, заставить клиента кешировать ты никак не можешь и все эти etag и прочее это только подсказка клиенту, что он может ответ закешировать и как он может проверить, что ресурс обновился. А вот каким способом он все это будет делать и будет ли делать вообще это уже полностью на его (клиента) усмотрение.
...
Рейтинг: 0 / 0
01.11.2020, 18:49
    #40014009
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
handler кеширование картинки
zizi_top
что лучше использовать etag или lastmodify?


Зависит от вашей логики.
Для картинок и вообще файлов лучше подходит Etag -- он для этого и создан.
Last-Modified больше подходит для страничек, чтобы отталкиваться не от содержимого, а от времени последнего изменения.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / handler кеширование картинки / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]