Как удалить кэш сайта?
Опять непонятки
Есть сервер с nginx (и apachi), есть каталог где по умолчанию сайты складываются. Если просто копирую туда простейший хтмл все работает по адресу my-server-IP/test1 допустим.
Теперь копирую туда статический сайт сгенерированный студией, не работает - пути загрузки дополнительных файлов не совпадают.
Изменяю в index.html тэг base, загружаю - не работает. Смотрю какой исходник загрузился - оказывается старый.
Переименовываю index.html в index1.html, загружаю сайт - всё работает. Переименовываю назад, опять не работает и опять первая версия файла.
Копирую правильную версию в новый каталог - все абсолютно аналогично. Стираю в эксплорере все данные my-server-IP - не помогает. В девелопер тоолс такая опция есть.
Где искать эту первую копию?
Если в nginx-е кэш не включен
Не имею понятия - всё по умолчанию
то остаётся только кэш браузера
и где он гад сидит? Попробую новый браузер...
Когда index.html в браузере вызываете, запрос на сервер вообще уходит?
Согласно DevTools/Downloads обмен идет
А к апачу приходит?
Могу его для теста отключить. У меня "нормальная" графическая ОС от синологи, никаких команд. Хотя можно и терминал через SSH подключить.
Не имею понятия - всё по умолчанию
Надо смотреть конфиги. где-нибудь в /etc/nginx/nginx.conf Есть ли в нём proxy_cache_path. И ещё можно глянуть установлено ли sendfile в on или off. Оно может под виртуалкой глючить.
Могу его для теста отключить. У меня "нормальная" графическая ОС от синологи, никаких команд. Хотя можно и терминал через SSH подключить.
Ну, можно и отключить. А можно в логи посмотреть. synology OS это тот же линукс. Так что ssh в руки и вперёд, учить консоль :)
и где он гад сидит?
-----
А ты хоть где-то написал какой именно использовался?
Но Я не думаю что это оно - скорее всего хттпд удерживает в памяти всю страницу.
Согласно ДевТоолс/Дощнлоадс обмен идет
-----
Загрузка? Ну так ты и сам говоришь что на сервер страничка закидывается...
Оно может под виртуалкой глючить.
У меня не виртуалка - синологи
Так что ssh в руки и вперёд
Это можно один раз сделать. Даже Путю запустить и то дофига ручных шагов.
Надо будет поискать расширение, чтобы субдомены делать, а то пока только через другой порт можно.
После прочтения всех сообщений темы: вот поэтому я и не люблю веб-энтвиклунг. Сорри за оффтоп.
AlexNek, а почему вы (ну и другие) тут задаёте вопросы, а не скажем на Stackoverflow? Тут сидят "полтора землекопа" - вероятность найти ответ минимальна. Тем более по специфическим темам. ))
А как ты всех на один домайн посадишь?
------
Ничего не понимаю!!!
Зачем тебе один домен? Делай по домену на сайт.
Да и одному устройству несколько ИП сделать - тоже не имею представления как
-----
Да элементарно вроде как было - зашел в конфигурацию сети и дописал ИП, зашел в конфигуратор ИИС и прописал сайт на этом ИП. Все, никаких конфликтов и возни с портами...
Не думаю, что роутер это позволит.
-----
А это тут причем?
Да и для общения с внешним миром можно вообще ИП в другой подсетке иметь...
Вот нашел что то подобное, только у меня вместо первых двух роутер + модем. У роутера один единственный ИП как наружу, так и для DynDNS.
Как ты два собрался делать не имею понятия?
Делай по домену на сайт
У меня их что - магазин доменов? Один бесплатный и пара занятых платных.
зашел в конфигуратор ИИС
нету такого на сервере.
зашел в конфигурацию сети и дописал ИП
Как это? У меня все ИП fritzbox раздает. По одному на устройство.
Как ты два собрался делать не имею понятия?
-----
Да без проблем - внешний - один, на веб-сервере - по одному на сайт, роутинг - по МАКам..
У меня их что - магазин доменов?
-----
Что у тебя - Я не знаю.
А у меня был локальный ДНС (без синхронизации), прописанный первым - как мне надо - так и настраивал.
нету такого на сервере
-----
Нет именно этого - есть какой-то аналог.
Просто потому как Апача позволяет хостить более одного сайта.
А что именно и где - надо смотреть в мат.части - Я Апачем не пользуюсь.
У меня все ИП fritzbox раздает.
-----
Не фризбох, а ДХЦП на фризбохе - урезаешь ему зону раздаваемых ИП на полсетки и получаешь полсетки для статиков, которые можно прописывать как первыми, так и вторыми.
Но даже это не требуется - можно писать сразу статики и даже из другой подсети.
А вообще - Я плохо понимаю как можно вешать веб-сервер на динамический ИП...
Чутка посисадминить в детстве в какой-нибудь конторе было бы полезно...
а что именно Вы оттуда сделали?
В
etc/nginx/nginx.conf
и (где сайт)
etc/nginx/sites-enabled/ххх.conf
Добавил часть после коммента
# kill cache
Потом
nginx -s reload
Ничего нет подобного что на картинке. Вот два файла которые изменил
Хотя заметил две интересные вещи: появился нет6, хотя проект с 5.0
и service-worker.js 22
await caches.open(cacheName).then(cache => cache.addAll(assetsRequests));
Что у тебя - Я не знаю.
Ну так картинка примерно такая, как привел.
А как домен иметь без покупки - не знаю
Нет именно этого - есть какой-то аналог
Есть только по имени и по порту.
как можно вешать веб-сервер на динамический ИП
Это фрица этим занимается, как ИП изменился - докладывает наверх.
в детстве
прошло уже блин
etc/nginx/nginx.conf
Аккуратнее. Мне помнится что синолоджи эти файлы при каждом перезапуске сервиса генерирует заново. Т. е. их править не поможет.
Но я не помню точно, происходит ои такое с nginx. Поищи в гугле что-то вроде synology template for nginx (по-моему
Есть только по имени и по порту.
-----
Не рассказывай мне глупости.
Да, Я не знаю апача, но Я знаю что мелкомягкие с него стянули очень многое.
Так что думаю что надо изучать матчасть...
Это фрица этим занимается
-----
Думаю что тут написаны глупости.
Скорее всего где-то прописано что веб-трафик кидать на тот МАК независимо от текущего ИП...
прошло уже блин
-----
Увы и ах... Мне повезло - успел поковырятся в сетках... хотя и недостаточно для сетевика...
не знаю правильно ли я понял вопрос но есть определенные best practices как ставить catche header определенным mime types.
например надо говорить браузеру не кешировать html вообще если сайт меняется (а обычно он меняется, за исключением если ты залил версию которой больше не нужны изменения)
принятно выставлять кэш css и js примерно на 1 год, НО при каждом изменении css и js надо им генерировать рандомное имя. Например myfile_234lkj234l.js, каждый билд будет оставлять префикс myfile_, но будет генерировать рандомный стринг после префикса который и будет вставляться в твой html который не кэшируется, а значит при каждом изменении js браузеру придется грузить новый js, даже если предидущую версию он положил в кэш на год (имя js файла в твоем html поменялось)
вот пример конфигурации кэш хэдеров для nginx
https://github.com/h5bp/server-configs-nginx/blob/main/h5b...
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/...
у тебя скорее всего вебсервер говорит браузеру кэшировать html
НО при каждом изменении css и js надо им генерировать рандомное имя
Не уверен что все имена можно изменить как угодно в MS проекте, да и не выход это. Вот хотя бы index.html
Этих кэшей может быть дофига
https://www.nginx.com/blog/nginx-caching-guide/
There are potentially multiple caches between the web browser and the application server:
the client’s browser cache, intermediary caches,
content delivery networks (CDNs), and the load balancer or reverse proxy
sitting in front of the application servers.
Хорошо бы найти нужный и просто удалить.
надо говорить браузеру не кешировать html
Это похоже на стороне сервера. Попробовал с "новым" браузером - никаких отличий
Не уверен что все имена можно изменить как угодно в MS проекте, да и не выход это. Вот хотя бы index.html
что конкретно генерирует сайт ? Так index.html и не надо, ты с помощью кэш хедера говоришь браузеру не кешировать html. Кешируется только js и css и cache busting решает проблему их обновления
Этих кэшей может быть дофига
конечно. По этому для управления этими кешами и есть Cache-Control header и тд. который всем этим кешам и говорит что кешировать и на сколько а что нет
Это похоже на стороне сервера. Попробовал с "новым" браузером - никаких отличий
покажи что говорит
curl -v http://your-ip/index.html
что конкретно генерирует сайт ?
Есть Blazor PWA тест проект - копируется часть каталога publish
ты с помощью кэш хедера говоришь браузеру не кешировать html
Пока не нашел как браузер здесь вмешивается.
покажи что говорит
Это прямо с сервера
xxx# curl -v https://xxx.synology.me/
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
> GET / HTTP/2
> Host: xxx.synology.me
> user-agent: curl/7.75.0
> accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/2 200
< date: Sat, 25 Sep 2021 09:28:30 GMT
< content-type: text/html
< content-length: 2911
< last-modified: Fri, 24 Sep 2021 11:21:35 GMT
< vary: Accept-Encoding
< etag: "614db4bf-b5f"
< accept-ranges: bytes
<
<!DOCTYPE html>
<html>
актуальный текст
--Это с клиента--
C:\>curl -v https://xxx.synology.me/
* Trying ххх.ххх.ххх.ххх...
* TCP_NODELAY set
* Connected to xxx.synology.me (xxx.xxx.xxx.xxx) port 443 (#0)
* schannel: SSL/TLS connection with xxx.synology.me port 443 (step 1/3)
* schannel: checking server certificate revocation
* schannel: sending initial handshake data: sending 204 bytes...
* schannel: sent initial handshake data: sent 204 bytes
* schannel: SSL/TLS connection with xxx.synology.me port 443 (step 2/3)
* schannel: encrypted data got 4094
* schannel: encrypted data buffer: offset 4094 length 4096
* schannel: sending next handshake data: sending 93 bytes...
* schannel: SSL/TLS connection with xxx.synology.me port 443 (step 2/3)
* schannel: encrypted data got 51
* schannel: encrypted data buffer: offset 51 length 4096
* schannel: SSL/TLS handshake complete
* schannel: SSL/TLS connection with xxx.synology.me port 443 (step 3/3)
* schannel: stored credential handle in session cache
> GET / HTTP/1.1
> Host: xxx.synology.me
> User-Agent: curl/7.55.1
> Accept: */*
>
* schannel: client wants to read 102400 bytes
* schannel: encdata_buffer resized 103424
* schannel: encrypted data buffer: offset 0 length 103424
* schannel: encrypted data got 3204
* schannel: encrypted data buffer: offset 3204 length 103424
* schannel: decrypted data length: 3175
* schannel: decrypted data added: 3175
* schannel: decrypted data cached: offset 3175 length 102400
* schannel: encrypted data buffer: offset 0 length 103424
* schannel: decrypted data buffer: offset 3175 length 102400
* schannel: schannel_recv cleanup
* schannel: decrypted data returned 3175
* schannel: decrypted data buffer: offset 0 length 102400
< HTTP/1.1 200 OK
< Date: Sat, 25 Sep 2021 09:36:51 GMT
< Content-Type: text/html
< Content-Length: 2911
< Last-Modified: Fri, 24 Sep 2021 11:21:35 GMT
< Connection: keep-alive
< Keep-Alive: timeout=20
< Vary: Accept-Encoding
< ETag: "614db4bf-b5f"
< Accept-Ranges: bytes
<
<!DOCTYPE html>
<html>
актуальный текст
Как смотришь DevTools/sources то там старый текст
Получается браузер?
Есть Blazor PWA тест проект - копируется часть каталога publish
я не очень в курсе что это за софтина но судя по всему cache busting в ней возможен. https://stackoverflow.com/questions/60037402/cache-busting...
( второй ответ с линком )
Пока не нашел как браузер здесь вмешивается.
судя по аутпуту curl твой вебсервер отдает контент и не говорит клиенту как кешировать документ (нет ни Cache-Control ни Expires хедеров). Все что твоему браузеру остается это решать самому как кешировать документ, при этом ему остается расчитывать как долго кешировать документ только по Last-Modified заголовку и алгоритм скорее всего такой
(current time - last modified time) / 10
подробнее тут https://datatracker.ietf.org/doc/html/rfc7234#section-4.2....
Как смотришь DevTools/sources то там старый текст
это и есть причина почему даже после обновления
документа на сервере твой браузер все равно достанет его из своего локального кэша.
советую перенять настройки из линка на h5bp который я тебе в предидущем посте бросил
И как интересно тогда дядя Вася вызовет мой сайт из своего компа?
-----
Я так надеялся, что тебе хочется по-удобнее для разработки, а тебе - во вне...
Во-вне - тоже можно, но домены придется покупать и парковать... на единственный внешний ИП...
А дальше, во внутренней сетке, все можно лепить как хочется/удобно...
но судя по всему cache busting в ней возможен
Это только совместно с софтом, который уже устарел и не работает.
твой браузер все равно достанет его из своего локального кэша.
А отчего же он его не показывает? И вот открыл сайт совсем из другого компа - всё тоже самое.
Зато теперь скопировал новую версию в новый субдомен и всё "нормально". Кэш создался в браузере, но осталось море ошибок типа:
Failed to find a valid digest in the 'integrity' attribute for resource 'https://ххх.synology.me/_framework/AutoMapper.dll' with computed SHA-256 integrity '2UwMB6TJWR7IL29DunLOHliu/B/WXftGTXcC0mXvVqg='. The resource has been blocked.
При публикации на Azure такого нет.
Это только совместно с софтом, который уже устарел и не работает.
просто загуглть Blazor WPA cache busting
> А отчего же он его не показывает? И вот открыл сайт совсем из другого компа - всё тоже самое.
так обьяснил же уже. Твой вебсервер не шлет ни Cache-Control ни Expires Header. curl это показывает.
Какой вебсервер то хоть ?
А отчего же он его не показывает? И вот открыл сайт совсем из другого компа - всё тоже самое.
Попробуйте с мобильника. Только через мобильную связь, отключив вайфай, чтобы по домашней локалке не шло.
так обьяснил же уже. Твой вебсервер не шлет ни Cache-Control ни Expires Header. curl это показывает.
Какой вебсервер то хоть ?
При публикации на Azure такого нет.
Похоже, несовместимость. Не хочет Blazor на неродных системах нормально работать. ))
Если есть виндовая машина дома, и можно развернуть веб сервер IIS, попробуйте на нём. Точнее, его там даже разворачивать не надо - он давно в поставку входит. Надо только, вроде, включить графический интерфейс для его управления - так проще.
А я говорил, что в первую очередь всю "мультиплатформу" будут точить под свои родные системы, а остальные - по остаточному принципу. Чуваки, кодящие в линуксах на VS Code под .NET Core тоже, поди, постоянно страдают - то того нет, то это не работает.
ну и что, не доходит. Откуда браузер берет старую версию хтмл и скрипта?
из своего кеша.
твой nginx не правильно сконфигурирован, по этому он не говорит браузеру как кешировать и твой браузер все кладет в свой локальный кэш. Добавь https://github.com/h5bp/server-configs-nginx/blob/main/h5b...
Пока ничего полезного не находится
если эта софтина не может как все нормальные проги генерировать рандомные имена, генерируй параметры в своем html, типа
https://stackoverflow.com/questions/9692665/cache-busting-...
из своего кеша.
А как туда может попасть версия, которая была удалена еще пару дней назад до старта данного сайта на этом компе?
С андроида тоже читается старая версия, при этом апп вообще не имеет кэша.
h5bp каталога у меня тоже нет, надо еще разобраться как его правильно добавить
А как туда может попасть версия, которая была удалена еще пару дней назад до старта данного сайта на этом компе?
мне трудно это определить, думаю тебе лучше знать на каком компе какие версии появляются :)
> С андроида тоже читается старая версия, при этом апп вообще не имеет кэша.
http дебажить надо правильными тулами. curl например
> h5bp каталога у меня тоже нет, надо еще разобраться как его правильно добавить
просто копипастой в твой конфиг
думаю тебе лучше знать на каком компе какие версии появляются
Так о чем и говорю, что версия с кэшем клиента никак не находит подтверждения
http дебажить надо правильными тулами
До этого еще дело не дошло
Первое задание: проблема на сервере или клиенте?
Из того, что вижу, проблема на клиенте никак не подтверждается.
просто копипастой в твой конфиг
Сделал, как и ожидалось - ничего не изменилось
так а есть какой-то план, как докопаться до истины? ну, разобраться, кто страницы отдаёт апач или энжинэкс? перечитываются ли без ошибок конфиги по SIGHUP? почему у Вас DevTools не показывают, из локального кэша он берёт страницы или качает (у меня все три браузера показывают)? посмотреть в ХТТП хэдеры (их тоже в DevTools видно)?
> Так о чем и говорю, что версия с кэшем клиента никак не находит подтверждения
посмотреть в твой аутпут curl и там в принципе все уже ясно. Плюс если ты сомневаешься, что мешает взять нормальный браузер типа хрома, загрузить страницы и посмотреть в девелопер тулс откуда он берет контент при рефреше. Это все делается за максимум минуту
> Сделал, как и ожидалось - ничего не изменилось
подтверждение в студию. Покажи какие заголовки для кэша сервер шлет при запросе.
кто страницы отдаёт апач или энжинэкс?
В настройках стоит энжинэкс, да и не должна коре с апачем работать, по идее.
так а есть какой-то план, как докопаться до истины?
Особо докапываться уже смысла нет, нашелся путь как проверять новые версии. Просто записывать их в новых субдомен.
Обычно находится как то самой собой через какое то время.
> Может быть тогда есть версия откуда берется старая версия на совершенно новом компе?
у меня не может быть никаких версий. Единственное о чем я могу судить это то что показывает curl
> Edge значит не подходит? При отладке - да, иногда зависает.
все что угодно подходит, что показывает заголовки, откуда взят документ (кэш или нет) и т.д.
я просто на твоем скриншоте подобных вещей не увидел
я просто на твоем скриншоте подобных вещей не увидел
Заголовки я просто не копировал.
Кэш я отключил в дев тоолс
Особых отличий не вижу от edgeну и курл
> User-Agent: curl/7.55.1
> Accept: */*
>
* schannel: client wants to read 102400 bytes
* schannel: encdata_buffer resized 103424
* schannel: encrypted data buffer: offset 0 length 103424
* schannel: encrypted data got 3204
* schannel: encrypted data buffer: offset 3204 length 103424
* schannel: decrypted data length: 3175
* schannel: decrypted data added: 3175
* schannel: decrypted data cached: offset 3175 length 102400
* schannel: encrypted data buffer: offset 0 length 103424
* schannel: decrypted data buffer: offset 3175 length 102400
* schannel: schannel_recv cleanup
* schannel: decrypted data returned 3175
* schannel: decrypted data buffer: offset 0 length 102400
< HTTP/1.1 200 OK
< Date: Sun, 26 Sep 2021 20:22:25 GMT
< Content-Type: text/html
< Content-Length: 2911
< Last-Modified: Fri, 24 Sep 2021 11:21:35 GMT
< Connection: keep-alive
< Keep-Alive: timeout=20
< Vary: Accept-Encoding
< ETag: "614db4bf-b5f"
< Accept-Ranges: bytes
<
<!DOCTYPE html>
<html>
....
curl ни чем не отличается от того что ты до этого постил. Нет никаких заголовков говорящих клиенту как кешировать контент. Нет ни Cache-Control ни Expires
А значит как я уже и говорил, браузер будет кешировать и как на долго это зависит от Last-Modified заголовка.
Простыми словами браузер будет кэшировать локально в твоем случае
curl ни чем не отличается от того что ты до этого пости
Ну я это и раньше говорил
браузер будет кэшировать локально в твоем случае
Да пусть себе кэширует сколько вздумается. Локальный кэш всегда можно удалить.
А вот какого сервер отдает то новую, то старую версию...
Но пока на этом задерживаться уже нет времени, с субдоменами работает относительно неплохо.
> Ну я это и раньше говорил
ну так я подразумевал что надо добавить правильный конфиг. Если его не добавишь, вероятность что что то изменится весьма мала.
отдает сервер старую или новую версию тоже видно в curl, но не видя примеров - трудно помочь
что надо добавить правильный конфиг
Вообще то это палка о двух концах, для отладки кэш особо не нужен, а когда прогой пользуешься то да.
Так что нужно еще и избирательно на сайт.
но не видя примеров - трудно помочь
Спасибо огромное, но пока для этого направления нет времени. Родственники вот еще проблемок накидали...
> Вообще то это палка о двух концах, для отладки кэш особо не нужен, а когда прогой пользуешься то да.
я всегда в проектах советую разработку вести в окружениях которые по максимуму похожи на прод, что бы потом избежать стресс и непонятки с опсами.
В принципе правило не кешировать html вообще, а только все остальное и пользоваться cache busting очень просто настроить. Для примеров конфигов можно глянуть h5bp проект.
> Спасибо огромное, но пока для этого направления нет времени. Родственники вот еще проблемок накидали...
без проблем