3. Баг кэширования несуществующих страниц

При стандартном кешировании Друпал сохраняет в кеш несуществующие страницы. Например, у нас есть сайт example.com, на котором имеются следующие страницы:

example.com/catalog
example.com/catalog?page=1
example.com/catalog?page=2
...
example.com/catalog?page=1000

Т.е. Друпал кеширует эти страницы через cache_set($base_root . request_uri(), $data, 'cache_page', CACHE_TEMPORARY, drupal_get_headers());. Но проверку на существование страницы request_uri() не делает... И если мы будем запрашивать несуществующие страницы, например:

example.com/catalog?page=1001
example.com/catalog?page=1002
...

и так до бесконечности, то Друпал будет сохранять в таблицу cache_page весь этот хлам. В качестве сохраняемых данных будет браться запись из последней существующей страницы (example.com/catalog?page=1000).

В итоге, если запустить на такой сайт бота, который будет делать подобные запросы, таблица cache_page очень быстро разрастется до огромных разделов.


Баг заметил sinkora