board: add cache
add cache
validation: add is_url