Repository: next.js
Issue: Caching and hard-navigating nested @slots for `./[category]` and `./[category]/[category]`
Labels: bug,Navigation

### Verify canary release

- [X] I verified that the issue exists in the latest Next.js canary release

### Provide environment information

```bash
Operating System:
      Platform: darwin
      Arch: arm64
      Version: Darwin Kernel Version 22.5.0: Mon Apr 24 20:52:24 PDT 2023; root:xnu-8796.121.2~5/RELEASE_ARM64_T6000
    Binaries:
      Node: 20.2.0
      npm: 9.6.6
      Yarn: N/A
      pnpm: 8.5.1
    Relevant packages:
      next: 13.4.3
      eslint-config-next: 13.4.3
      react: 18.2.0
      react-dom: 18.2.0
      typescript: 5.0.4
```


### Which area(s) of Next.js are affected? (leave empty if unsure)

Routing (next/router, next/navigation, next/link)

### Link to the code that reproduces this issue or a replay of the bug

https://github.com/timfee/meet-repro

### To Reproduce


https://github.com/vercel/next.js/assets/3246342/f2370e67-f850-4645-a4fb-f3ba7fc46101


There are two bugs at play. (Maybe both of them are me implementing it wrong :-)), but I figured I'd share for posterity: 

Consider an app with a date picker and a time picker; a trivial version is below but there's [a repro](https://github.com/timfee/meet-repro) too.

```tsx
// ./app/layout.tsx
<div>
  <div>{props.calendar}</div>
  <div>{props.timepicker}</div>
</div>

// ./app/@date/(.)/default.tsx
<div>Click a date: <Link href='/yyyy-mm-dd'>yyyy-mm-dd</Link></div>

// ./app/@date/(.)/[date]/page.tsx
<div>You have selected {params.date}</div>

// ./app/@time/(.)/[date]/default.tsx
<div>Pick a time first</div>

// ./app/@time/(.)/[date]/[time]/page.tsx
<div>You have selected {params.time} on {params.date}</div>
```



### Describe the Bug

(Two bugs actually)

#### Bug 1: Hard navigation loses context
Observe that when I soft navigate to a different `times`, the selected `date` remains.
When I refresh with _only_ the `date` slot filled, it works correctly.
But when I refresh with `date` and `time`, the `date` slot gets lost (it looks for the `page.tsx` inside of `@time` - which isn't the end of the world, but seems unclear if that is WAI).

#### Bug 2: Caching doesn't seem to work
As you can see in the repro, I'm trying to minimize server calls. In this case, I'm capturing a user's calendar of events from Google's APIs using a lightweight direct `fetch` command.

Because it's a `POST` and ineligible for caching, I wrote a serialized `cache()` container around it, but I'm not seeing requests de-duped. (In fact, when I _hover_ over `Link` objects, a GET request is made to the endpoint!)

### Expected Behavior

#### Bug 1: Hard navigation loses context

I'd like to be able to specify how to handle dueling slots -- e.g. always use `date` from `@date` **or** have clear documentation that explains `@date/@time` will look for the deeper route on reload. 

#### Bug 2: Caching

I'm not sure if the "scope" of the requests are getting lost across routes, but de-duping doesn't seem to occur.

### Which browser are you using? (if relevant)

`Chrome latest`

### How are you deploying your application? (if relevant)

`next dev`