While the external file caching area of your web-browser does have a maximum limit, that limit is set quite high.
(the actual limit is set by the developers of the web-browser in question, this article explains this in more detail)
I don't know the answer to your question, and without access to your project and it's external media it would be difficult to debug the issue. I did however notice some portentual issues with your example.
When you add a Passage Tag (like thatplace) to a passage and that passage is viewed within the generated story HTML, the story format's engine will assign that tag to a number of HTML elements that make up the current page.
1. It gets assign to the data-tags attribute of the following elements:
<html data-tags="thatplace">
<body data-tags="thatplace" ...>
<div id="..." data-passage="..." data-tags="thatplace" class="passage ...">
<!-- ... the contents of the current passage. -->
</div>
2. It gets assign to the class attribute of the following elements:
<body ... class="thatplace">
<div id="..." data-passage="..." ... class="passage thatplace">
<!-- ... the contents of the current passage. -->
</div>
note: Some developers consider the old technique of using the CSS class attribute (like the above thatplace example is) to indicate behaviour as an out-dated practice, which is why SugarCube also supports the newer data-XXXX attribute technique as well and why ideally your CSS selectors should target the data-tags attribute instead of the class attribute if the Passsage Tag is being used to represent behaviour instead of just styling.
So when you use a CSS selector like the one your example it is actually being applied to both the body elements as well as the div.passage element, which isn't ideal. You can over come this issue by making your CSS selectors more specific.
(I will assume that you want the images to target the body element, instead of the div.passage element.)
body.thatplace {
background: url("images/thatplace.gif") no-repeat center center;
height: 100vh;
}