Сокеты кешируются на сайте WordPress но везде стоит nocache, что делать?

Ссылка скопирована
1 ответ

Добрый день!
Проблема следующего характера на сайте, имеем:
WordPress
socket, который прокинут на url /socket (использую autobahn/22.10.1)
CloudFlare
Пару плагинов кеша:
Autoptimize
Redis объектный кэш
WP Fastest Cache
Проблема:
На главной странице при долгом не reload появляются записи за 12.12.2023 и 13.12.2023 (одни и те же в основном)

Что пытался делать:
В CF прописал

Сокеты кешируются на сайте Wordpress но везде стоит nocache, что делать?

В WP Fastest Cache прописал

Сокеты кешируются на сайте Wordpress но везде стоит nocache, что делать?

Результат:
Все равно тянет старые записи

PS В консоле разработчика
Cache-Control: no-cache
для /socket

Дополнительно:

Для начала отключить и почистить кеши. А также убрать все возможные прокладки
Ваш КЭП.

  • Refguser, убрать прокладки в виде CF и плагинов не могу по понятным причинам , это прод. Тестировать на стенде нет смысла в связи с тем что синтетика с вероятность в 90% не выявит проблем
  • А staging не завезли?
  • VoidVolker, есть он у меня, поддомен с слепком сайта и ограниченной папкой upload за месяц.
  • Насколько помню, CF в ответе добавляет заголовки, попал ли в кеш или нет. И, опять же, насколько помню, у него там как минимум два кеша, которые разными заголовками сбрасываются.
    Т.е. как минимум можно посомтреть - CF кеширует или не CF
  • Антон,
    HTTP/1.1 101 Switching Protocols Date: Mon, 15 Jan 2024 16:16:56 GMT Connection: upgrade Sec-WebSocket-Protocol: wamp.2.json Upgrade: websocket Sec-WebSocket-Accept: LXBz/77w5hpQ78C/6ohAlPPno/I= X-Powered-By: Ratchet/0.4.4 CF-Cache-Status: DYNAMIC Report-To: {"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v3?s=5HrGgiBEnNqrXk7w4V4FWhjw%2F4VdZ5gsGNd8JS9LoYa%2F5meHJ8J9tpZ%2FT3FCiCNf11eKSycbPiQsJ9yiWf20SFLGe9lf7oTNJb0ZIExAFGtKwtCjwrtjoEzEUHArFEM%3D"}],"group":"cf-nel","max_age":604800} NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800} Server: cloudflare CF-RAY: 845f6d0ef85d0eab-AMS alt-svc: h3=":443"; ma=86400

    HTTP/1.1 101 Switching Protocols Date: Mon, 15 Jan 2024 16:16:56 GMT Connection: upgrade Sec-WebSocket-Protocol: wamp.2.json Upgrade: websocket Sec-WebSocket-Accept: LXBz/77w5hpQ78C/6ohAlPPno/I= X-Powered-By: Ratchet/0.4.4 CF-Cache-Status: DYNAMIC Report-To: {"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v3?s=5HrGgiBEnNqrXk7w4V4FWhjw%2F4VdZ5gsGNd8JS9LoYa%2F5meHJ8J9tpZ%2FT3FCiCNf11eKSycbPiQsJ9yiWf20SFLGe9lf7oTNJb0ZIExAFGtKwtCjwrtjoEzEUHArFEM%3D"}],"group":"cf-nel","max_age":604800} NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800} Server: cloudflare CF-RAY: 845f6d0ef85d0eab-AMS alt-svc: h3=":443"; ma=86400

    GET wss://site.com/socket/ HTTP/1.1 Host: site.com Connection: Upgrade Pragma: no-cache Cache-Control: no-cache User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 OPR/105.0.0.0 Upgrade: websocket Origin: https://site.com Sec-WebSocket-Version: 13 Accept-Encoding: gzip, deflate, br Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7 Cookie: google-analytics_v4_gqNH__ga4=83af079a-9fea-4ff0-9587-577661fd9651; google-analytics_v4_gqNH___z_ga_audiences=83af079a-9fea-4ff0-9587-577661fd9651; _ym_uid=1702545766724363281; _ym_d=1702545766; tmr_lvid=27dba12c329dc76253e64210196439b8; tmr_lvidTS=1702545766435; rank_math_analytics_date_range=-7%20days; wfls-remembered-NX5mx6UeL4uDYD1Qe5yjKg=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpdiI6Ik1OQllRRFY0VUVldnZ4TGVJQ0tXUWc9PSIsIl9leHAiOjE3MDcwMzg3NDd9.7hOxJp9g5o14Csmuwifb1U3zJO2p_iljh2Rdhe_mWgY; wordpress_logged_in_26d261600c0ef6ec05aaa67906f1ad7c=romastrah%7C1705656347%7CA9FKB0PrPldmufYBpGniF6rpKiutnkrUnFk6nG7xRXH%7C8dec3af187d8dd609e86194d8a6475fb9e052fd75e7563ed9b9f49a0714f0068; wp-settings-72=libraryContent%3Dbrowse%26editor%3Dtinymce%26hidetb%3D1%26imgsize%3Dmedium%26editor_expand%3Don%26posts_list_mode%3Dlist%26advImgDetails%3Dshow%26widgets_access%3Doff%26post_dfw%3Doff%26urlbutton%3Dfile%26align%3Dcenter%26news-list_tab%3Dpop; tr_adc9148d24d3ec880083429ffd0e22402a91959e=372c8b0e-53a7-4422-920c-ab725c8b6be2; tr_c76b3e270dfe69652faab45c1b3d238f075b4beb=e381c35f-94bb-40f2-96b4-cb4d4842070a; tr_c76b3e270dfe69652faab45c1b3d238f075b4beb_ratings=1; tr_c76b3e270dfe69652faab45c1b3d238f075b4beb_entity=1; tr_c76b3e270dfe69652faab45c1b3d238f075b4beb_point=6ab8d0ac-124c-4c69-8426-07508d9d9905; wp-settings-time-72=1705063773; _ym_isad=2; wfwaf-authcookie-f80924151fd86eb03b94f97ccc29c86d=72%7Cadministrator%7Cmanage_options%2Cunfiltered_html%2Cedit_others_posts%2Cupload_files%2Cpublish_posts%2Cedit_posts%2Cread%7Ca5d59203dc04394f4cc4bdf9d16002e86fe4c5e8319399071cdf39d8b668235e; google-analytics_v4_gqNH__ga4sid=1167090038; google-analytics_v4_gqNH__session_counter=152; tmr_detect=0%7C1705335408108; google-analytics_v4_gqNH__engagementDuration=0; google-analytics_v4_gqNH__engagementStart=1705335415825; google-analytics_v4_gqNH__counter=7460; google-analytics_v4_gqNH__let=1705335415825 Sec-WebSocket-Key: gXWIu7UlS3ZAYWEG0tSBIQ== Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits Sec-WebSocket-Protocol: wamp.2.json, wamp.2.msgpack

    GET wss://site.com/socket/ HTTP/1.1 Host: site.com Connection: Upgrade Pragma: no-cache Cache-Control: no-cache User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 OPR/105.0.0.0 Upgrade: websocket Origin: https://site.com Sec-WebSocket-Version: 13 Accept-Encoding: gzip, deflate, br Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7 Cookie: google-analytics_v4_gqNH__ga4=83af079a-9fea-4ff0-9587-577661fd9651; google-analytics_v4_gqNH___z_ga_audiences=83af079a-9fea-4ff0-9587-577661fd9651; _ym_uid=1702545766724363281; _ym_d=1702545766; tmr_lvid=27dba12c329dc76253e64210196439b8; tmr_lvidTS=1702545766435; rank_math_analytics_date_range=-7%20days; wfls-remembered-NX5mx6UeL4uDYD1Qe5yjKg=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpdiI6Ik1OQllRRFY0VUVldnZ4TGVJQ0tXUWc9PSIsIl9leHAiOjE3MDcwMzg3NDd9.7hOxJp9g5o14Csmuwifb1U3zJO2p_iljh2Rdhe_mWgY; wordpress_logged_in_26d261600c0ef6ec05aaa67906f1ad7c=romastrah%7C1705656347%7CA9FKB0PrPldmufYBpGniF6rpKiutnkrUnFk6nG7xRXH%7C8dec3af187d8dd609e86194d8a6475fb9e052fd75e7563ed9b9f49a0714f0068; wp-settings-72=libraryContent%3Dbrowse%26editor%3Dtinymce%26hidetb%3D1%26imgsize%3Dmedium%26editor_expand%3Don%26posts_list_mode%3Dlist%26advImgDetails%3Dshow%26widgets_access%3Doff%26post_dfw%3Doff%26urlbutton%3Dfile%26align%3Dcenter%26news-list_tab%3Dpop; tr_adc9148d24d3ec880083429ffd0e22402a91959e=372c8b0e-53a7-4422-920c-ab725c8b6be2; tr_c76b3e270dfe69652faab45c1b3d238f075b4beb=e381c35f-94bb-40f2-96b4-cb4d4842070a; tr_c76b3e270dfe69652faab45c1b3d238f075b4beb_ratings=1; tr_c76b3e270dfe69652faab45c1b3d238f075b4beb_entity=1; tr_c76b3e270dfe69652faab45c1b3d238f075b4beb_point=6ab8d0ac-124c-4c69-8426-07508d9d9905; wp-settings-time-72=1705063773; _ym_isad=2; wfwaf-authcookie-f80924151fd86eb03b94f97ccc29c86d=72%7Cadministrator%7Cmanage_options%2Cunfiltered_html%2Cedit_others_posts%2Cupload_files%2Cpublish_posts%2Cedit_posts%2Cread%7Ca5d59203dc04394f4cc4bdf9d16002e86fe4c5e8319399071cdf39d8b668235e; google-analytics_v4_gqNH__ga4sid=1167090038; google-analytics_v4_gqNH__session_counter=152; tmr_detect=0%7C1705335408108; google-analytics_v4_gqNH__engagementDuration=0; google-analytics_v4_gqNH__engagementStart=1705335415825; google-analytics_v4_gqNH__counter=7460; google-analytics_v4_gqNH__let=1705335415825 Sec-WebSocket-Key: gXWIu7UlS3ZAYWEG0tSBIQ== Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits Sec-WebSocket-Protocol: wamp.2.json, wamp.2.msgpack

  • Собственно вот заголовок CF-Cache-Status - его CF добавляет и по нему можно понять, что там с кешем. Но для вебсокета такого заголовка нет, так что этим способом разобраться не получится.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Редакция DevOps Ответ

    Если “сокет кешируется”, хотя у /socket стоит Cache-Control: no-cache, сначала нужно разделить две вещи: кешируется ли WebSocket-соединение, или старые данные приходят уже из backend/Redis/приложения. Сам WebSocket в классическом смысле CDN-кэшем не кешируется, но старые сообщения могут отдавать сервер, Redis, объектный кэш WordPress или клиентский JS.

    Что проверить:

    • в Network убедиться, что соединение действительно WebSocket, а не обычный HTTP polling;
    • посмотреть, какие данные приходят в Frames, а не только заголовки;
    • временно отключить Redis object cache и плагины кэша на staging;
    • проверить, не хранит ли frontend старый список в localStorage/sessionStorage;
    • проверить backend autobahn: откуда он берёт записи и не кеширует ли результат сам;
    • посмотреть Cloudflare headers: cf-cache-status, правила bypass, websocket support.

    Если старые записи появляются без reload через долгое время, это больше похоже на состояние приложения: клиент переподключился, получил старый snapshot, или сервер отдаёт закешированный набор из Redis/WordPress transient.

    Добавьте в сообщение сокета технические поля: timestamp генерации, ID последней записи, источник данных. Тогда станет понятно, где устаревание:

    {
      "generated_at": "2026-05-14T10:00:00+03:00",
      "source": "db",
      "last_post_id": 12345
    }

    { "generated_at": "2026-05-14T10:00:00+03:00", "source": "db", "last_post_id": 12345 }

    Для Cloudflare нужно отдельное правило bypass для /socket*, но если сокет проксируется через нестандартный backend, важнее корректная конфигурация origin и отсутствие HTML-кэша на промежуточном URL.

    Итог: не доверяйте только заголовку no-cache. Проверьте Frames, источник данных на backend, Redis/transients и клиентское хранилище. В большинстве таких случаев “кешируется сокет” оказывается старым payload, который генерирует приложение.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно