Сокеты кешируются на сайте WordPress но везде стоит nocache, что делать?
Добрый день!
Проблема следующего характера на сайте, имеем:
WordPress
socket, который прокинут на url /socket (использую autobahn/22.10.1)
CloudFlare
Пару плагинов кеша:
Autoptimize
Redis объектный кэш
WP Fastest Cache
Проблема:
На главной странице при долгом не reload появляются записи за 12.12.2023 и 13.12.2023 (одни и те же в основном)
Что пытался делать:
В CF прописал
В WP Fastest Cache прописал
Результат:
Все равно тянет старые записи
PS В консоле разработчика
Cache-Control: no-cache
для /socket
Дополнительно:
Для начала отключить и почистить кеши. А также убрать все возможные прокладки
Ваш КЭП.
Т.е. как минимум можно посомтреть - 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
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


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