lynx-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: lynx-dev Re: [patch] LYNXMESSAGES:/ without temp-files


From: Leonid Pauzner
Subject: Re: lynx-dev Re: [patch] LYNXMESSAGES:/ without temp-files
Date: Tue, 19 Oct 1999 19:35:43 +0400 (MSD)

19-Oct-99 08:18 Klaus Weide wrote:
>>
>> In fact, anchor->no_cache = TRUE have no effect so far: when I visit
>> LYNXMESSAGES:/ next time I saw the old output unless I press ^R to reload.

> Hmm, I would have to gdb it to see why that happens.  From looking
> at the code, it seems it *should* work as you did it.

It *is* working due to LYforce_*/LYoverride_* set in getfile().
Perhaps "internal links" were triggered in a strange way - I don't know.
Check HTLoadDocument() from HTAccess.c:

...
    /*
    **  See if we can use an already loaded document.
    */
    if (!LYforce_no_cache && (text = (HText *)HTAnchor_document(anchor))) {
        /*
        **  We have a cached rendition of the target document.
        **  Check if it's OK to re-use it.  We consider it OK if:
        **   (1) the anchor does not have the no_cache element set, or
        **   (2) we've overridden it, e.g., because we are acting on
        **       a PREV_DOC command or a link in the History Page and
        **       it's not a reply from a POST with the LYresubmit_posts
        **       flag set, or
        **   (3) we are repositioning within the currently loaded document
        **       based on the target anchor's address (URL_Reference).
        *
        *    If DONT_TRACK_INTERNAL_LINKS is defined, HText_AreDifferent()
        *    is used to determine whether (3) applies.  If the target address
        *    differs from that of the current document only by a fragment
        *    and the target address has an appended fragment, repositioning
        *    without reloading is always assumed.
        *    Note that HText_AreDifferent() currently always returns TRUE
        *    if the target has a LYNXIMGMAP URL, so that an internally
        *    generated pseudo-document will normally not be re-used unless
        *    condition (2) applies. (Condition (1) cannot apply since in
        *    LYMap.c, no_cache is always set in the anchor object).  This
        *    doesn't guarantee that the resource from which the MAP element
        *    is taken will be read again (reloaded) when the list of links
        *    for a client-side image map is regenerated, when in some cases
        *    it should (e.g., user requested RELOAD, or HTTP response with
        *    no-cache header and we are not overriding).
        *
        *    If DONT_TRACK_INTERNAL_LINKS is undefined, a target address that
        *    points to the same URL as the current document may still result in
        *    reloading, depending on whether the original URL-Reference
        *    was given as an internal link in the context of the previously
        *    loaded document.  HText_AreDifferent() is not used here for
        *    testing whether we are just repositioning.  For an internal
        *    link, the potential callers of this function from mainloop()
        *    down will either avoid making the call (and do the repositioning
        *    differently) or set LYinternal_flag (or LYoverride_no_cache).
        *    Note that (a) LYNXIMGMAP pseudo-documents and (b) The "List Page"
        *    document are treated logically as being part of the document on
        *    which they are based, for the purpose of whether to treat a link
        *    as internal, but the logic for this (by setting LYinternal_flag
        *    as necessary) is implemented elsewhere.  There is a specific
        *    test for LYNXIMGMAP here so that the generated pseudo-document
        *    will not be re-used unless LYoverride_no_cache is set.  The same
        *    caveat as above applies w.r.t. reloading of the underlying
        *    resource.
        *
        **  We also should be checking other aspects of cache
        **  regulation (e.g., based on an If-Modified-Since check,
        **  etc.) but the code for doing those other things isn't
        **  available yet.
        */
#ifdef DONT_TRACK_INTERNAL_LINKS
        if (LYoverride_no_cache || !HText_hasNoCacheSet(text) ||
            !HText_AreDifferent(anchor, full_address))
#else
        if (LYoverride_no_cache ||
            ((LYinternal_flag || !HText_hasNoCacheSet(text)) &&
             strncmp(full_address, "LYNXIMGMAP:", 11)))
#endif /* TRACK_INTERNAL_LINKS */
        {
            CTRACE((tfp, "HTAccess: Document already in memory.\n"));
            HText_select(text);

#ifdef DIRED_SUPPORT
            if (HTAnchor_format(anchor) == WWW_DIRED)
                lynx_edit_mode = TRUE;
#endif
            redirection_attempts = 0;
            return YES;
        } else {
            ForcingNoCache = YES;
            CTRACE((tfp, "HTAccess: Auto-reloading document.\n"));
        }
    }
...




reply via email to

[Prev in Thread] Current Thread [Next in Thread]